在芹菜中使用和弦执行多项任务

问题描述

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

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={

    },

上面的代码块是我正在运行的代码。它将运行正常,但实际上不会执行任务。我也有一个按计划运行此文件文件,它也可以正常运行。我只是不明白为什么它不能执行实际任务

解决方法

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