如何从项目级别调用芹菜(app)任务,反之亦然。
我有一个Django目录结构,如:
- proj
|_ celery.py
|_ settings.py
- app
|_ tasks.py
|_ views.py
在settings.py中,我有一个CELERYBEAT_SCHEDULE var,它引用app/tasks
中的shared_task。 celery inspect registered
中未列出此任务。
由于proj/celery.py
中定义了 的任务,因此它们在apps/views.py
中定义,可由app/apps.py
中的函数调用。
我已按照芹菜网站上的说明进行操作。
答案 0 :(得分:3)
shared_task装饰器中的函数必须列在app AppConfig中。
在from .tasks import add
下导入您的任务,如下所示:
app/tasks.py
在from proj.celery import shared_task
导入shared_task,如:
proj/celery.py
在import celery
from celery import shared_task
导入shared_task,如:
python manage.py celeryd --loglevel=DEBUG &
Pycharm会抱怨未使用的导入,但是它们被使用,而不是在pycharm解析文件中。
现在我开始像芹菜工人一样:
celery -A pears worker --loglevel=info &
而不是
app/tasks.py
CreateAsync
中的我的任务已注册并可以调用。