问题描述
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={})