Celery configure separate connection for producer and consumer

六眼飞鱼酱① 提交于 2020-01-13 10:55:13

问题


We have an application setup on heroku, which uses celery to run background jobs. The celery app uses RabbitMQ as the broker. We used heroku’s RabbitMQ Bigwig add-on as AMQP message broker. This add-on specifies two separate url one optimized for producer and other optimized for consumer. Also, as per RabbitMQ documentation it is recommended to use separate connections for producer and consumer.

Celery documentation does not provide a ways to specify connections separately to producer and consumer. Is there a way to specify two different broker urls in celery?


回答1:


Unfortunately, there isn't a clean way to do that. You can provide a custom broker connection explicitly on task.apply_async, but that means giving up on the connection pool feature. It might work for you.

from kombu import BrokerConnection
conn = BrokerConnection(hostname="producerbroker")

mytask.apply_async(args, kwargs, connection=conn)

The most straightforward solution is probably to have different config files for producer and worker.



来源:https://stackoverflow.com/questions/19824639/celery-configure-separate-connection-for-producer-and-consumer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!