【问题标题】:Good Python library for AMQP [closed]用于 AMQP 的优秀 Python 库 [关闭]
【发布时间】:2011-02-17 16:21:32
【问题描述】:

您能否推荐用于访问 AMQP (RabbitMQ) 的 Python 库?根据我的研究,pika 似乎是首选。

【问题讨论】:

    标签: python rabbitmq amqp


    【解决方案1】:

    我自己的研究使我相信使用正确的库是Kombu,因为这也是 Celery(@SteveMc 提到)已经过渡到的。我也在使用 RabbitMQ,并且已经成功使用 Kombu 和默认的 amqplib 后端。

    Kombu 还支持同一 API 后面的other transports。如果您需要替换 AMQP 或添加类似 redis 的东西,这很有用。不过没试过。

    旁注:Kombu 目前不支持最新的 pika 版本(如果您出于某种原因依赖它)。目前只支持 5.2.0,这有点早了。

    【讨论】:

    • 您现在应该更新此回复,因为根据您链接到的问题,您发现了自己的错误,并且损坏的不是 Kombu。
    • @Brandon Craig Rhodes:完成:)
    • stackoverflow.com/questions/48524536/… 这提供了 kombu 和 pika 之间的比较,并且可能会帮助未来的用户不仅仅是“使用这个库”
    【解决方案2】:

    Pika是RabbitMQ推荐的库,还提到了py-ampqlib。根据您使用 Rabbit 的目的,您可能还想查看 Celery(专用于分布式队列的客户端库)。

    同样,根据使用情况,您可能还想查看 Apache 的 qpid,它是 RabbitMQ 的完全基于 AMPQ 的客户端-服务器替代方案。 qpid 吸引我们的一件事是它似乎在服务器崩溃时具有更好的鲁棒性(队列以分布式方式持久化)。

    【讨论】:

    • 我刚刚发现 celery 会为每个任务创建一个队列,这是一个令人失望的弱点 celeryproject.org/docs/userguide/tasks.html#amqp-result-backend
    • 我们还没有发现这是一个问题;我们的使用任务很快就被消耗掉了(我们很少期望任何东西的停留时间超过几秒钟)。它也可能是特定于实现的——他们在那里特别提到了 RabbitMQ。不过,我很想知道这是否会给您带来困难。
    • 从未尝试过 celery,因为它似乎不适合整个 AMQP 架构。消息队列不仅仅用于将任务分配给工作池。
    • 好的,很高兴知道。是的.. celery 的主要优点是它需要大量的编码。如果我们发现问题,我们最终可能会像您所做的那样在 pika 周围编写一个薄包装器。祝你的项目好运!
    • pika存在很多问题,比如发布大消息失败,心跳超时失败;
    【解决方案3】:

    查看了所有这些库后,我现在确信正确答案不是它们。相反,在您选择的任何库上构建一个抽象层作为 shim,因为您必然会遇到必须更改库的情况。

    但请记住,如果您坚持使用相同版本的 AMQP 协议,这些库确实可以互操作。由于正在测试不同的库,我们有部分原型应用程序运行 pika、kombu 和 py-amqplib。

    阅读有关 replacing amqplib with pika 的博客,了解为什么这是一个好主意。

    【讨论】:

      【解决方案4】:

      我目前正在使我们的 Python 应用程序使用 SSL。我最初并没有开发这个应用程序(我也不是 Python 开发人员),所以我对它了解不多,但我们似乎使用了 AMQP Client in Twisted。

      QPid 也有一个。再说一次,我不知道质量。

      【讨论】:

      • 我简要地看了一下 txAMQP,但发展似乎停滞不前
      猜你喜欢
      • 1970-01-01
      • 2010-09-07
      • 2010-09-06
      • 2013-04-24
      • 2012-10-05
      • 2011-04-16
      • 2010-11-29
      • 2012-10-17
      • 1970-01-01
      相关资源
      最近更新 更多