1

这些是我的任务:

@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”的返回值。怎么做?

4

1 回答 1

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

于 2013-01-16T19:59:32.693 回答