提高RabbitMQ库pika的可靠性还是有更好的替代方案

2024-06-16 11:52:29 发布

您现在位置:Python中文网/ 问答频道 /正文

简要概述

通过Python-rabi架构,每天有10万个进程通过bitrabi架构提供10万个以上的微服务。在

架构的一个重要部分是一组16-32个并行消费者,它们作为multiprocessing.Process实例启动,从RabbitMQ获取并处理这些事务。在

当前用于通过Python与RabbitMQ接口的库是pika

有哪些问题和挑战?在

pika的BlockingConnection适配器相当不可靠。我相信它有自己的投票循环。在事务的突然爆发下,连接会断开。在

我通过tenacityPython库在抖动、指数退避模型中配置了重试,观察基本异常pika.exceptions.amqperor. 在

但是,尽管有这种保护措施,连接却突然断开:

104:Connection Reset by Peer 或者

in basic_publish
   raise exceptions.ChannelClosed()
pika.exceptions.ChannelClosed

看看pikaconsumerpublisher的异步实现

  • 它看起来像是一堆杂乱无章的回调,没有正确记录的序列
  • 我假设在基于多处理的体系结构中的独立线程中运行基于事件循环的使用者,并将结果返回给实际需要它的进程,这增加了复杂性

皮卡的另一个选择是什么?在

我遇到了amqp。他们的主页大多有一个API引用,没有任何使用模式或示例文档记录。在

这是一个足够稳定的库来挖掘吗? 或者有更好的选择吗?在


Tags: 实例进程架构记录rabbitmq消费者multiprocessingprocess