首页 > 解决方案 > 在 celery 中使用和弦完成多项任务

问题描述

我在注册任务时遇到问题。这是我的代码,请帮忙。

task.py

from celery_app import app
from celery import chord
from celery import signature

@app.task(bind=True)
def send_email(self):
    chorded_tasks = chord(get_expired_users.s(),notify.s()) #these tasks actually exist#
    chorded_tasks.get()
runthis.py

import celeryconfig
from celery import Celery
import os


celery = Celery()
celery.config_from_object("celeryconfig")
project_name = os.path.basename(os.getcwd())
celery.send_task(
    "tasks.send_email".format(project_name),
    kwargs={

    },
    args={

    },

上面的代码块是我正在运行的。它会运行良好,但实际上不会执行任务。我还有一个文件可以按计划运行它,而且效果也很好。我只是不明白为什么它不会运行实际任务

标签: pythonceleryscheduled-taskschord

解决方案


我相信您使用了错误的args参数类型。它应该是一个元组或一个列表。在您的示例中,您将字典作为 args 参数传递。这可能会导致您遇到的问题。考虑到您的任务没有参数,如下所示应该有效:celery.send_task("tasks.send_email".format(project_name), (), kwargs={})


推荐阅读