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

时间:2013-10-01 12:12:55

标签: python celery amqp

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

还有另一个解释here的选项,但我会避免它。

答案 1 :(得分:0)