使用Django运行芹菜的错误

时间:2014-03-10 03:52:48

标签: python django celery

这是我的项目结构:

fj_project
|-- fj
|   |-- celerybeat.pid
|   |-- celerybeat-schedule
|   |-- celeryconfig.pyc
|   |-- fe
|   |   |-- admin.py
|   |   |-- forms.py
|   |   |-- __init__.py
|   |   |-- models.py
|   |   |-- tasks.py
|   |   |-- tests.py
|   |   |-- views.py
|   |-- FeJa
|   |   |-- celeryconfig.pyc
|   |   |-- __init__.py
|   |   |-- settings
|   |   |   |-- base.py
|   |   |   |-- celeryconfig.py
|   |   |   |-- __init__.py
|   |   |   |-- local.py
|   |   |   |-- production.py
|   |   |   |-- tasks.py
|   |   |   `-- test.py
|   |   |-- urls.py
|   |   |-- wsgi.py
|   |-- fj.sqlite3
|   |-- __init__.py
|   |-- manage.py
|   |-- site-media
|   `-- templates
|       |-- 400.html
|-- Makefile
`-- requirements
    |-- local.txt
     -- production.txt

我从settings目录启动celery。它启动但不添加fe目录中提到的任务。这是我的celeryconfig文件:

from __future__ import absolute_import

from celery import Celery
from datetime import timedelta

app = Celery('fj',
             broker='amqp://',
             backend='amqp://',
             include=['tasks'])

# Optional configuration, see the application user guide.
app.conf.update(
    CELERY_TASK_RESULT_EXPIRES=3600,
)


if __name__ == '__main__':
    app.start()

我无法弄清楚如何在所有目录和子目录中进行芹菜发现任务。请帮忙。

1 个答案:

答案 0 :(得分:0)

您可以通过在Celery类的实例上调用autodiscover_tasks()来自动执行任务:

app.autodiscover_tasks(['fe'])

第一个参数是要搜索的包列表和关键字参数" related_name"可以包含保存任务的模块的名称(默认为"任务")。

要搜索的软件包列表可以是django&#39的INSTALLED_APPS列表。

这里是documentation的autodiscover_tasks()