【发布时间】:2011-02-17 16:21:32
【问题描述】:
您能否推荐用于访问 AMQP (RabbitMQ) 的 Python 库?根据我的研究,pika 似乎是首选。
【问题讨论】:
您能否推荐用于访问 AMQP (RabbitMQ) 的 Python 库?根据我的研究,pika 似乎是首选。
【问题讨论】:
我自己的研究使我相信使用正确的库是Kombu,因为这也是 Celery(@SteveMc 提到)已经过渡到的。我也在使用 RabbitMQ,并且已经成功使用 Kombu 和默认的 amqplib 后端。
Kombu 还支持同一 API 后面的other transports。如果您需要替换 AMQP 或添加类似 redis 的东西,这很有用。不过没试过。
旁注:Kombu 目前不支持最新的 pika 版本(如果您出于某种原因依赖它)。目前只支持 5.2.0,这有点早了。
【讨论】:
Pika是RabbitMQ推荐的库,还提到了py-ampqlib。根据您使用 Rabbit 的目的,您可能还想查看 Celery(专用于分布式队列的客户端库)。
同样,根据使用情况,您可能还想查看 Apache 的 qpid,它是 RabbitMQ 的完全基于 AMPQ 的客户端-服务器替代方案。 qpid 吸引我们的一件事是它似乎在服务器崩溃时具有更好的鲁棒性(队列以分布式方式持久化)。
【讨论】:
查看了所有这些库后,我现在确信正确答案不是它们。相反,在您选择的任何库上构建一个抽象层作为 shim,因为您必然会遇到必须更改库的情况。
但请记住,如果您坚持使用相同版本的 AMQP 协议,这些库确实可以互操作。由于正在测试不同的库,我们有部分原型应用程序运行 pika、kombu 和 py-amqplib。
阅读有关 replacing amqplib with pika 的博客,了解为什么这是一个好主意。
【讨论】:
我目前正在使我们的 Python 应用程序使用 SSL。我最初并没有开发这个应用程序(我也不是 Python 开发人员),所以我对它了解不多,但我们似乎使用了 AMQP Client in Twisted。
QPid 也有一个。再说一次,我不知道质量。
【讨论】: