如何配置Celery使用单独的BROKER_URL来生成和使用同一代理?

use*_*749 5 python amqp celery

我们有一个以两种方式使用Celery实例的应用程序:实例的.task属性用作我们的任务装饰器,当我们调用celery workers时,我们将实例作为-A( - app)参数传递.这个工作流程使用相同的Celery实例进行生产和消费,并且它已经有效,但我们对生产者(任务)和消费者(芹菜工人)使用相同的Celery实例.

现在,我们正在考虑使用Bigwig RabbitMQ,这是一个AMQP服务提供商,他们发布了两个不同的 URL,一个针对消息生产者进行了优化,另一个针对消息使用者进行了优化.

为了利用单独的代理端点,我们修改设置的最佳方法是什么?我假设一个Celery实例只能使用单个代理URL(通过BROKER_URL设置).除BROKER_URL设置外,我们是否应该使用两个不同的Celery实例配置相同?

Mau*_*cco 0

是的,你是对的,一个 celery 实例只能使用一个代理 URL。正如您所说,唯一的方法是使用 2 个具有不同 BROKER_URL 的工作人员,一个用于消费,一个用于生产。

从技术上讲,这是微不足道的,你可以利用这个(http://celery.readthedocs.org/en/latest/reference/celery.html#celery.Celery.config_from_object),但当然你会有两个工作人员在运行,但我没有不要认为这会带来任何问题。

这里还解释了另一种选择,但我会避免它。