2017-07-25 53 views
0

我有這樣的任務:是否有可能委託芹菜任務和阻塞,直到所有處理?

@app.task(name='somesmalltask') 
def some_small_task(some_input): 
    some_list = [] 
    #do something to some_list 
    return some_list 

是否有可能做這樣的事情:

all_results = map(lambda x: some_small_task.delay(x), inputs) 
#do stuff later to all_results 

但不是返回芹菜的任務,我想真正得到的結果。

我需要爲每個任務ID都這樣做嗎?

result = some_small_task.AsyncResult(task_id) 
result.get() 

回答

2

如果要啓動多個任務爲一組,你可以做這樣的事情:

>>> job = group([ 
...    add.subtask((2, 2)), 
...    add.subtask((4, 4)), 
...    add.subtask((8, 8)), 
...    add.subtask((16, 16)), 
...    add.subtask((32, 32)), 
... ]) 
>>> result = job.apply_async() 
>>> result.join() 
[4, 8, 16, 32, 64] 

這同時處理的任務,並返回使用join()方法的結果要等待最後的任務結束。

有關羣組和其他工作流程的更多信息here

+0

基於此,我決定採用和絃方法。謝謝! –

相關問題