2014-09-30 44 views
4

鉴于以下任务:通父任务参数都芹菜子任务

@app.task 
def task1(v1, v2): 
    return "val3" 

@app.task 
def task2(v1, v2, v3): 
    return "val4" 

@app.task 
def task3(v1, v2, v3): 
    return "val4" 

考虑以下工作流程:

workflow = chain(
    task1.s(), 
    group(
     task2.s(), 
     task3.s() 
    ) 
) 

result = workflow.delay("val1", "val2") 

我怎样才能得到芹菜去传递原始参数val1val2task2和组内的task3task1的结果是唯一传递的值。

回答

4

task.s()只是一个签名(部分函数)。如果你愿意,你可以随时传递一些参数。

所以你可以使用这个工作流程。

x = 'my first arg' 
y = 'my second arg' 

workflow = chain(task1.s(x, y), group(task2.s(x, y), task3.s(x, y))) 
result = workflow.delay() 

另请注意,第一个任务的结果作为第一个参数传递给下一个任务。

+0

比我想象的要简单得多。谢谢。 – Jon 2014-10-01 05:36:16