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