如何从项目级别调用芹菜(应用程序)任务,反之亦然。
我有一个 Django 目录结构,如下所示:
- proj
|_ celery.py
|_ settings.py
- app
|_ tasks.py
|_ views.py
settings.py 我有一个CELERYBEAT_SCHEDULE变量,指的是app/tasks
中的shared_task。 此任务未在 celery inspect registered
中列出。
注册表中列出的任务也不是,因为它们是在proj/celery.py
中定义的,可以通过apps/views.py
中的函数调用。
我已经按照芹菜网站上的说明进行操作。
shared_task装饰器中的函数必须在应用程序 AppConfig 中列出。
在app/apps.py
下,按如下所示导入任务:
from .tasks import add
在app/tasks.py
导入shared_task如下所示:
from proj.celery import shared_task
在proj/celery.py
导入shared_task如下所示:
import celery
from celery import shared_task
Pycharm 会抱怨未使用的导入,无论它们是如何使用的,只是不在 pycharm 正在解析的文件中。
现在,当我开始芹菜工人时,例如:
python manage.py celeryd --loglevel=DEBUG &
而不是
celery -A pears worker --loglevel=info &
我在app/tasks.py
中的任务已注册并可调用。