Celery 3.1之后的版本原生支持django1.8及更高。
推薦用法
目錄結(jié)構(gòu)
- proj/
- proj/__init__.py
- proj/settings.py
- proj/urls.py
- manage.py
在項目下創(chuàng)建一個celery.py(和項目配置文件settings.py同級)
from __future__ import absolute_import, unicode_literals
# 使用絕對包含路徑
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
# 設置django運行時需要的環(huán)境變量
app = Celery('proj') # 傳入的應該是項目名稱
app.config_from_object('django.conf:settings', namespace='CELERY')
# 讀取django 的配置信息,使用 'CELERY_' 開頭的即為celery的配置
app.autodiscover_tasks() # 自動發(fā)現(xiàn)在installed apps中包含的task(需要在tasks.py中定義)這樣就不用手動的在CELERY_IMPORTS中添加設置
@app.task(bind=True) # dumps its own request information
def debug_task(self):
print('Request: {0!r}'.format(self.request))
在項目的init.py文件中增加:
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ['celery_app']
在每個django app中即可加task,例如demoapp:
demoapp/tasks.py:
# Create your tasks here
from __future__ import absolute_import, unicode_literals
from celery import shared_task
@shared_task
def add(x, y):
return x + y
啟動工作進程
celery -A proj worker -l info
# 這邊指定的proj即為django項目名稱,需要像manage.py一樣使用
增加結(jié)果保存
pip install django-celery-results
增加 django-celery-results 到installed apps中
python manage.py migrate django_celery_results
在django的配置文件中增加設置,說明使用django來進行結(jié)果保存:
CELERY_RESULT_BACKEND = 'django-db'