给定以下任务:
@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")
如何让 celery 将原始参数 val1
和 val2
传递给 task2
和 task3
inside团体。 task1
的结果是唯一传递的值。
最佳答案
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()
另请注意,第一个任务的结果作为第一个参数传递给下一个任务。
关于python - 将父任务参数传递给所有 celery 子任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26124963/