我在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