django - 芹菜链在 django 上不起作用
问题描述
我的目的是依次调用两个任务
当 task1 完成时调用 task2。我已经做了这个到现在
为了按顺序执行我的任务,我使用了我在文档中找到的链方法。但是我的任务并不需要最后一个任务的结果才能像文档所说的那样工作。所以,我定义CELERY_IGNORE_RESULT = True
了链方法在执行时不从上一个任务中获取结果。
这是我如何做我的代码
任务.py
@app.task
def task1(param):
...
@app.task
def task2(param):
....
视图.py
from .task import task1, task2
from celery import chain
chain(task1.delay(identifier), task2.delay(identifier))().get()
我所做的每一次尝试都出现了这个错误:
| 不支持的操作数类型:“AsyncResult”和“AsyncResult”
有谁知道我该如何解决这个问题?
解决方案
问题是......你应该改为链签名:
chain(task1.s(identifier), task2.s(identifier))().get()
来自文档:
链原语让我们将签名链接在一起,以便一个接一个地调用,本质上形成一个回调链。
有关更多详细信息,请参阅http://docs.celeryproject.org/en/latest/userguide/canvas.html#canvas-designing-work-flows
推荐阅读
- c# - 如何在 C# SQL 查询中插入动态列名?
- python - 使用python将pdf下载到特定文件夹
- javascript - 为什么代码在我编写 myArray[i] 时有效,而不是在我将 myArray[i] 保存在变量中时有效?
- r - 是否有 R 函数来提取单个组均值?
- jekyll - jekyll - netlify 上带有 beautiful-jekyll 的主页链接错误。为了使用 netlify 构建生成正确的主页链接,我需要进行哪些更改?
- c# - Xamarin.Forms 为 Android/iOS 生成 .a 静态库
- swift - Swift 5 分段控制截断标题
- c# - NonAsync 方法将为单流调用抛出 Async
- ios - 如何删除搜索栏中的“放大镜”图标?
- swiftui - 在 SwiftUI AppLifecycle Document App 中,如何在活动的 ContentView 中获取菜单命令?