- proj/
- proj/__init__.py
- proj/settings.py
- proj/urls.py
- manage.py
from __future__ import absolute_import
import os
from celery import Celery
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings') #注意这里的proj
from django.conf import settings # noqa
app = Celery('proj') #创建应用,再这之前要先设置上面的os.environ.setdefault,设置意味着celery
命令行程序将知道Django项目的位置
# 你可以在这里直接传递对象,但是使用字符串更好,因为当使用Windows或execv时,worker不必序列化对象
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) #打开自动发现apps里面的那些应用有没有包含tasks.py文件,
#那么Celery应用就会自动去检索创建的任务。比如你添加了一个任务,在django中会实时地检索出来。
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
from __future__ import absolute_import #目的是拒绝隐士引入,celery.py和celery冲突。
#这将确保在Django启动时始终导入应用程序,以便@shared_task
装饰器使用
from .celery import app as celery_app # noqa