我希望能够在芹菜中链接任务,以便第二个任务仅在第一个任务完成后执行。
在下面的示例中,我声明了 2 个任务。 hello()
和world()
.我希望world()
仅在hello()
完成后执行。
tasks.py
import os
from celery import Celery
from time import sleep
CELERY_BROKER = "pyamqp://guest@localhost//"
app = Celery('tasks', broker=CELERY_BROKER)
@app.task
def hello():
sleep(2) # simulate slow computation
return "Hello"
@app.task
def world():
sleep(2) # simulate slow computation
return "World"
api.py
from celery import chain
res = chain(hello.delay(), world.delay())
print(res)
这将引发以下错误:
类型错误:|: "异步结果"和 的不受支持的操作数类型 "异步结果">
阅读有关 Celery Canvas 的链基元(工作流程(的信息。我建议阅读整个画布:设计工作流部分。当然,它谈到了如何构建您描述的任务链。