如何在Django中的应用程序/项目中注册celery任务?

时间:2016-05-23 12:18:26

标签: django celery pycharm

如何从项目级别调用芹菜(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中的函数调用。

我已按照芹菜网站上的说明进行操作。

1 个答案:

答案 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中的我的任务已注册并可以调用。