【问题标题】:How to use celery to get messages from a rabbit-mq server?如何使用 celery 从 rabbit-mq 服务器获取消息?
【发布时间】:2014-03-03 12:34:13
【问题描述】:

celery 文档建议 Rabbit-MQ 必须充当中间人,用作消息传递平台。

在我的基础架构中,Rabbit-MQ 是每秒为我提供一些数据的主服务器。现在,无论何时提供数据,我都希望 Celery 执行某些任务。

现在,这抛弃了整个发布者-工作者模型,因为我们没有在生成消息的地方使用 Celery。

那么,我该怎么做呢?

【问题讨论】:

标签: python rabbitmq celery


【解决方案1】:

Celery 可以使用多个后端。如果您已经在使用 RabbitMQ,那么该选项很有吸引力。

然而,这些是不同的问题。使用通用 RabbitMQ 客户端库(例如 pika)为您的消息实现消费者,然后,如果需要,使用 Celery 来安排任务。

【讨论】:

    【解决方案2】:

    自定义消费者似乎是将其与 Celery 集成的最佳方式。

    看看http://docs.celeryproject.org/en/latest/userguide/extending.html#id4

    【讨论】:

      【解决方案3】:

      Celery 不是任意的 MQ 消费者。如果你想要,你应该查看Kombu - messaging library for Python(这也是一个 Celery 子项目)。

      您需要做的是编写一个基于 Kombu 的小型服务,该服务将使用来自 RabbitMQ 的任意消息,并发送 Celery 任务以在您的 Celery 集群上执行。您可以使用其他一些库与 RabbitMQ 进行通信,但由于您希望最终执行 Celery 任务,因此无论如何您都将安装 Celery,这反过来将安装其主要依赖项之一 - Kombu。要与 RabbitMQ Kombu 通信,请使用 py-amqp 或(如果已安装)librabbitmq。

      【讨论】:

        猜你喜欢
        • 2014-05-31
        • 2018-07-30
        • 2023-01-31
        • 2018-03-02
        • 2014-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-31
        相关资源
        最近更新 更多