Django芹菜多个工人和多个队列

时间:2017-05-23 15:14:25

标签: django multithreading rabbitmq celery

我有5个名为1-5的工作人员和两个队列A和B,我需要为工作人员1和2分配队列A,并且3,4,5专用于B,我需要为工作人员分配工作人员1和2队列B中的任务,当A为空或1,2为空闲时。我需要使用来自django app的rabbitmq brocker在我的芹菜任务中配置它。您能否指定如何根据上述逻辑分配队列特定任务和运行工作程序

1 个答案:

答案 0 :(得分:1)

所以,对于芹菜来说,这就是你所需要的:

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

为了在django中分配队列,你有多个方法: (我的设置是conf) 通过设置中的任务app /文件夹:

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