我们有一个以两种方式使用Celery实例的应用程序:实例的.task
属性用作我们的任务装饰器,当我们调用celery worker
时,我们将实例作为-A传递( - app)参数。这个工作流程使用相同的Celery实例进行生产和消费,并且它已经有效,但我们对生产者(任务)和消费者(芹菜工人)使用相同的Celery实例。
现在,我们正在考虑使用BigQig RabbitMQ,这是一个AMQP服务提供商,他们发布了两个不同的 URL,一个针对消息生产者进行了优化,另一个针对消息使用者进行了优化。
为了利用单独的代理端点,我们修改设置的最佳方式是什么?我假设一个Celery实例只能使用单个代理URL(通过BROKER_URL设置)。除BROKER_URL设置外,我们是否应该使用两个不同的Celery实例配置?
答案 0 :(得分:0)
是的,你是对的,一个celery实例只能使用一个代理URL。正如你所说,唯一的方法是使用两个只有不同BROKER_URL的工人用于消费,一个用于生产。
技术上是微不足道的,你可以利用这个(http://celery.readthedocs.org/en/latest/reference/celery.html#celery.Celery.config_from_object),但是当然你会有两个工作人员在运行,但我不认为这会带来任何问题。
还有另一个解释here的选项,但我会避免它。
答案 1 :(得分:0)