消耗单个队列的多个Celery实例

时间:2014-07-21 07:20:03

标签: python django celery celery-task

是否可以在不同的机器上使用单个队列执行多个芹菜实例,使用django优选使用django-orm作为后端? 如果可能的话,我怎么能实现这一点,我似乎无法找到任何相关的文档。

1 个答案:

答案 0 :(得分:1)

是的,它们可能只需要使用相同的broker。例如,如果您使用的是AMQP,则服务器上的配置必须共享相同的

BROKER_URL = 'amqp://user:password@localhost:5672//'

有关详细信息,请参阅routing page。例如,假设你想为两个服务器建立一个公共队列,然后一个特定于每个服务器,你可以做到

在服务器1上:

CELERY_ROUTES = {'your_app.your_specific_tasks1': {'queue': 'server1'}}
user@server1:/$ celery -A your_celery_app worker -Q server1, default

在服务器2上:

CELERY_ROUTES = {'your_app.your_specific_tasks2': {'queue': 'server2'}}
user@server2:/$ celery -A your_celery_app worker -Q server2, default

当然它是可选的,默认情况下,所有任务都将路由到名为celery的队列。