python - 如何在 celery 中链接任务
问题描述
我希望能够在 celery 中链接任务,以便第二个任务仅在第一个任务完成后执行。
在下面的示例中,我声明了 2 个任务。hello()
和world()
。我只想world()
在完成后执行hello()
。
任务.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)
这会引发以下错误:
TypeError:不支持的操作数类型|:“AsyncResult”和“AsyncResult”
解决方案
阅读 Celery Canvas 的链原语(工作流程)。我建议阅读整个Canvas:设计工作流程部分。自然,它会讨论如何构建您所描述的任务链。
推荐阅读
- python - Keras 密集算法的输入数据形状
- python - 如何为 .NET HTTP 服务器设置 Gitlab CI 并使用 Python 进行测试?
- html - 在 Angular 中使用 PatchValue 或 SetValue 根据更新的 FormControl 更新输入类型时间
- r - 用户在闪亮的应用程序 R 中在数据表中创建新列
- r - Azure 容器 - 简单的 R 管道工部署问题?
- azure-storage - 天蓝色存储帐户中神秘的不可见“blob”文件夹
- google-sheets - 谷歌表格中的 ImportXML 函数以提取特定数据
- ios - 如何在 SwiftUI 中获取环境对象数组的索引?
- python - 将文件的输出与字符串/列表或ansible when 语句中的任何内容进行比较
- excel - 比较列和传输数据