2014-09-30 69 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