【发布时间】:2014-09-11 15:11:31
【问题描述】:
是否有可能在不同的机器上使用多个 celery 实例从单个任务队列中消费,使用 django 最好使用 django-orm 作为后端? 如果可能的话,我该如何实现它,我似乎找不到任何文档。
【问题讨论】:
标签: python django celery celery-task
是否有可能在不同的机器上使用多个 celery 实例从单个任务队列中消费,使用 django 最好使用 django-orm 作为后端? 如果可能的话,我该如何实现它,我似乎找不到任何文档。
【问题讨论】:
标签: python django celery celery-task
是的,有可能,他们只需要使用相同的broker。例如,如果您使用 AMQP,则服务器上的配置必须共享相同的
BROKER_URL = 'amqp://user:password@localhost:5672//'
有关详细信息,请参阅routing page。例如,假设您想为两台服务器创建一个公共队列,然后每个服务器都有一个特定的队列,您可以这样做
CELERY_ROUTES = {'your_app.your_specific_tasks1': {'queue': 'server1'}}
user@server1:/$ celery -A your_celery_app worker -Q server1, default
CELERY_ROUTES = {'your_app.your_specific_tasks2': {'queue': 'server2'}}
user@server2:/$ celery -A your_celery_app worker -Q server2, default
当然是可选的,默认情况下所有的任务都会被路由到名为celery的队列中。
【讨论】:
celery 的同一个(默认)队列中消费。