适合AMQP的优秀Python库

27 投票
4 回答
27952 浏览
提问于 2025-04-16 12:00

你能推荐一个用来访问AMQP(RabbitMQ)的Python库吗?根据我的调查,pika似乎是大家比较喜欢的选择。

4 个回答

3

看了这么多库之后,我现在相信,正确的选择其实是都不要用。相反,应该在你选择的任何库上建立一个抽象层,这样可以避免将来不得不更换库的麻烦。

不过要记住,如果你使用的是相同版本的AMQP协议,这些库之间是可以互相配合的。因为不同的库经过测试,我们的一个原型应用程序中同时运行了pika、kombu和py-amqplib。

可以看看这篇关于 用pika替换amqplib 的博客,了解一下为什么这样做是个好主意。

26

我自己研究后发现,使用 Kombu 这个库是最合适的,因为Celery(@SteveMc提到的那个)也已经转向使用它。我现在在用RabbitMQ,并且已经成功地用Kombu和默认的amqplib后端搭配过。

Kombu还支持通过同一个API使用其他传输方式。这在你需要替换AMQP或者想要加入像redis这样的东西时非常有用。不过我还没尝试过这些。

顺便提一下:Kombu目前不支持最新的pika版本(如果你出于某种原因依赖它的话)。现在只支持5.2.0版本,这让我之前遇到过麻烦。

22

Pika是RabbitMQ推荐的库,另外还有一个叫py-amqplib的库也被提到。根据你使用RabbitMQ的目的,你可能还想看看Celery(这是一个专门用于分布式排队的客户端库)。

同样,根据你的使用情况,你也可以考虑Apache的qpid,这是一个基于AMPQ的完整客户端-服务器替代方案,和RabbitMQ类似。我们之所以对qpid感兴趣,是因为它在服务器崩溃时似乎更稳定(队列以分布式的方式持久化)。

撰写回答