我们在heroku上有一个应用程序设置,它使用芹菜来运行后台作业 . 芹菜应用程序使用RabbitMQ作为代理 . 我们使用heroku的RabbitMQ Bigwig插件作为AMQP消息代理 . 此附加组件指定两个单独的URL,一个针对 生产环境 者优化,另一个针对消费者进行了优化 . 另外,根据RabbitMQ文档,建议为 生产环境 者和消费者使用单独的连接 .
Celery文档未提供单独指定 生产环境 者和使用者的连接的方法 . 有没有办法在芹菜中指定两个不同的经纪人网址?
不幸的是,没有一种干净的方法可以做到这一点 . 您可以在 task.apply_async 上显式提供自定义代理连接,但这意味着放弃连接池功能 . 它可能适合你 .
task.apply_async
from kombu import BrokerConnection conn = BrokerConnection(hostname="producerbroker") mytask.apply_async(args, kwargs, connection=conn)
最直接的解决方案可能是为 生产环境 者和 Worker 提供不同的配置文件 .
1 回答
不幸的是,没有一种干净的方法可以做到这一点 . 您可以在
task.apply_async
上显式提供自定义代理连接,但这意味着放弃连接池功能 . 它可能适合你 .最直接的解决方案可能是为 生产环境 者和 Worker 提供不同的配置文件 .