django-celery使用

1.新进一个django项目

- proj/
  - proj/__init__.py
  - proj/settings.py
  - proj/urls.py
- manage.py

2.在该项目创建一个proj / proj / celery.py模块来定义Celery实例

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))

3.修改proj / proj /__init__.py

from __future__ import absolute_import #目的是拒绝隐士引入,celery.py和celery冲突。
#这将确保在Django启动时始终导入应用程序,以便@shared_task装饰器使用
from .celery import app as celery_app  # noqa

猜你喜欢

转载自www.cnblogs.com/CGCong/p/9391436.html