2017-06-01 43 views
0

我已創建任務在芹菜Python中,一個任務的輸出並行處理任務

@app.task 
def mainTask(msg,nc): 
    decryptFunction.decryptFunc(msg) 
    if len(decryptFunction.messageJson): 

我異步接收數據。

def on_message(client, userdata, msg): 
    result = mainTask.delay(msg.payload.decode("utf-8"),1) 

我需要使用輸出decryptFunction.messageJson在5個任務,並同時運行

+0

你的意思是你想'decryptFunction.messageJson'被用在5個獨立的任務中,但是仍然希望'mainTask'運行而不停止? –

+0

是的,這是要求 – Jos

回答

0

我從你的需求理解是什麼,我會建議而不是使mainTask,因爲異步可以調用其他5個任務作爲celery任務,從mainTask

def mainTask(msg, nc): 
    decryptFunction.decryptFunc(msg) 
    if len(decryptFunction.messageJson): 
     response1 = task1.delay(decryptFunction.messageJson) 
     response2 = task2.delay(decryptFunction.messageJson) 
     response3 = task3.delay(decryptFunction.messageJson) 
     response4 = task4.delay(decryptFunction.messageJson) 
     response5 = task5.delay(decryptFunction.messageJson) 

和你on_message功能:

def on_message(client, userdata, msg): 
    result = mainTask(msg.payload.decode("utf-8"),1) 

但是這是假設你的其他5個任務是互斥的,並且對其中一個的響應不影響另一個任務,因爲如果他們不是,你不能使他們成爲異步任務。

但是,如果你的mainTask是耗時的,你可以使用它作爲Celery任務。

+0

是明智的使用芹菜組並行處理任務1至5 – Jos

+0

我用它在我的一些項目中,一直工作到現在。 –