将芹菜文件表明,这是一个坏主意,有任务等待的其他任务的结果.但建议的解决方案(见"好"标题)离开是可喜爱的东西.具体来说,没有明确的方法将子任务的结果返回给调用者(同样,它有点难看).
那么,有没有"链接"工作的方式,所以调用者得到最终工作的结果?例如,要使用add示例:
>>> add3 = add.subtask(args=(3, ))
>>> add.delay(1, 2, callback=add3).get()
6
Run Code Online (Sandbox Code Playgroud)
或者,返回Result的实例是否可以?例如:
@task
def add(x, y, callback=None):
result = x + y
if callback:
return subtask(callback).delay(result)
return result
Run Code Online (Sandbox Code Playgroud)
这将使链中"最终"工作的结果可以通过简单的方式重新获得:
result = add(1, 2, callback=add3).delay()
while isinstance(result, Result):
result = result.get()
print "result:", result
Run Code Online (Sandbox Code Playgroud)