在单应用程序Django项目中使用Celery

时间:2020-02-12 13:14:58

标签: django celery

为简单起见,我已经根据Single-App Django Project Anatomy模式构建了Django项目。这给了我一个如下的项目结构:

myproject
├── manage.py
├── settings.py
├── celery.py
├── myapp
│   ├── models.py
│   ├── tasks.py
│   ├── ...
│   └── views.py
├── urls.py
└── wsgi.py

此外,我创建了一个celery.py,其中包含初始化该应用程序实例:

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
app = Celery('myproject')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

我确实意识到Celery可能期望其集成具有“传统的”项目结构。在这种情况下,什么是正确的celery.py设置?应该如何运行worker?

1 个答案:

答案 0 :(得分:0)

我认为您需要修改 init .py文件以在Django启动时加载该应用程序。 添加代码段以修改' init .py'模块

from __future__ import absolute_import, unicode_literals
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app
__all__ = ('celery_app',)

来源:https://docs.celeryproject.org/en/latest/django/first-steps-with-django.html