我在Celery的tasks.py
中有几项任务。如何在Celery中的队列之间切换任务
# this should go to the 'math' queue
@app.task
def add(x,y):
uuid = uuid.uuid4()
result = x + y
return {'id': uuid, 'result': result}
# this should go to the 'info' queue
@app.task
def notification(calculation):
print repr(calculation)
我希望做的是这些任务在单独的芹菜队列,然后分配在每个队列多名工人。
问题是,我不知道一种方法来从我的代码中从一个队列到另一个队列任务。
因此,例如,当add
任务完成执行时,我需要一种方法将生成的Python字典放到info
队列中以进一步处理。我应该怎么做?
在此先感谢。
编辑-CLARIFICATION-
正如我在评论中说,这个问题从本质上变成如何检索从queue A
到queue B
工人的地方的数据。
芹菜任务对象自带的' apply_async'方法,它可以用来指定你想发送t的队列通过指定队列参数来请求,例如'getSystemInfo.apply_async(queue = queueList [i])' 您可以让工作人员只通过添加-Q选项来侦听特定队列,例如'--app = dir.app --loglevel = INFO -Q'。一旦完成了这一切,你只需要一些内部的书籍来了解哪个队列得到什么任务 '' –
cmidi
2015-04-01 15:19:21
@cmidi足够公平。但本质上,问题是工作人员如何将数据从'队列A'检索到'队列B'...... – kstratis 2015-04-01 15:22:15
这就是我没有把它作为答案的原因,我不清楚这个问题到底是什么。这些任务是否会一个接一个地运行,还是可以在不同的队列中同时运行?你想从一个运行任务的结果提供给另一个,或者你想参数? – cmidi 2015-04-01 15:31:10