2017-05-23 31 views
2

我有5名工人命名为1-5和两个队列A和B,我需要为工人1和2分配队列A,并且为B分配3,4,5,我需要当A为空或1,2为空闲时,为队列B中的任务分配工人1和2。我需要在我的芹菜任务中使用django应用程序中的rabbitmq brocker进行配置。您可以指定如何根据上述逻辑Django芹菜多个工人和多个队列

回答

1

所以配置队列的具体任务和运行工人,芹菜这是你需要什么:

celery multi start 5 -A conf -l info -Q:1-2 queueA -Q:3-5 queueB --pidfile="%n.pid" 

对于Django的分配队列你有一个以上的方法: (我的设置是在CONF)中设置 通过任务应用程序/文件夹:

app.conf.task_routes = { 
    'appA.tasks.*': {'queue': 'queueA'}, 
    'appB.tasks.*': {'queue': 'queueB'}, 
} 

直接使用:

myTask.apply_async((2, 2), queue='queueA', countdown=10) 

也许一些其他的,但对我来说我用这个方法:

app.conf.task_default_queue = 'queueA' 

我用app.conf.task_routes像cron的

具体使用