Celery-在链组中运行子任务

时间:2019-10-09 00:06:18

标签: python celery celery-task

希望一切都好!

问题:我试图在链中运行一组子任务,然后在父级中,我将一组缠绕在链中。子任务正在执行;但是,最父级组基元的结果要在子任务可以吐回其结果之前完成。

示例

---我下面有3个任务---

@app.task
def task_one(seconds):
    time.sleep(seconds)
    return [seconds + 0.1, seconds + 0.2]

@app.task
def task_two(seconds):
    return group(task_three.signature(args=(x,)) for x in seconds)()

@app.task
def task_three(seconds):
    time.sleep(seconds)
    return  {
        'sleep': seconds
    }

---任务的名称如下---

g = group(
      chain(
         task_one.s(x),
         task_two.s()
      ) for x in range(1, 3)
)
promise = g.apply_async()
print(promise.get())

函数task_two将创建一组要执行的任务(task_three)。运行后,最外面的组将完成执行并在task_three任务完成之前返回结果。

知道为什么会这样吗?

0 个答案:

没有答案