2017-07-25 58 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

基于此,我决定采用和弦方法。谢谢! –

相关问题