我需要从models.py调用芹菜任务(在tasks.py中),唯一的问题是,tasks.py导入models.py,所以我无法从models.py导入tasks.py。
有没有办法只使用其名称来调用芹菜任务,而无需导入它?为了相同的原因(防止循环导入),为ForeignKey字段实现了类似的事情。
答案 0 :(得分:16)
是的,有。
您可以使用:
from celery.execute import send_task
send_task('my_task', [], kwargs)
确保您的任务功能有一个名称:
from celery import task
@task(name='my_task')
def my_task():
...
希望它有所帮助!
答案 1 :(得分:5)
在Celery 3 +中:
from celery import Celery
app = Celery()
app.send_task('my_task', [], kwargs)