这些是我的任务:
@task(name = 'hello')
def hello():
print "hello"
return "helo"
@task(name = 'hey')
def hey(resp):
print resp
我这样称呼他们:g = celery.chain(hello.s(),hey.s())
但是我希望它像这样完成:你好任务应该返回一个值,不仅要给任务“嘿”它还应该返回一个值。我的意思是,一旦执行完毕,我应该能够获得“hello”的返回值。怎么做?
答案 0 :(得分:1)
调用链时返回的结果实例将用于链中的最后一个任务,但它会将引用保留回父级,因此您可以遍历父级以获取第一个任务:
r = chain(hello.s(), hey.s())()
r.parent.get(timeout=1)
r.parent.parent.get(timeout=1)
first = r
while first.parent:
first = first.parent
请参阅http://docs.celeryproject.org/en/latest/userguide/canvas.html#chains