5

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

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

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

4

2 回答 2

0

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

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

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

于 2014-03-28T13:51:28.480 回答
0

此功能将在 Celery 4.0 中提供:http: //docs.celeryproject.org/en/master/whatsnew-4.0.html#configure-broker-url-for-read-write-separately

于 2016-10-06T18:40:17.667 回答