官方參考文檔:https://docs.celeryproject.or...html
注意:Celery 4.0支持Django 1.8和更高版本。對於Django 1.8以前的版本,請使用Celery 3.1。python
pip install celery
-- proj/ -- manage.py -- proj/ -- __init__.py -- settings.py -- urls.py -- myapp/ -- __init__.py -- apps.py -- views.py -- models.py
在proj/proj/
下新建一個celery.py
模塊,編寫以下代碼:數據庫
import os from celery import Celery from __future__ import absolute_import, unicode_literals os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings') # 設置django環境 app = Celery('proj') app.config_from_object('django.conf:settings', namespace='CELERY') # 使用CELERY_ 做爲前綴,在settings中寫配置 app.autodiscover_tasks() # 發現任務文件每一個app下的task.py
在proj/proj/__init__.py
文件下導入上面建立的模塊, 代碼以下:django
from __future__ import absolute_import, unicode_literals from .celery import app as celery_app __all__ = ['celery_app']
在myapp/
下建立本身的任務模塊tasks.py
,編寫任務函數並用@shared_task
裝飾,代碼以下:後端
from __future__ import absolute_import, unicode_literals from celery import shared_task @shared_task def async_func(): pass
存儲任務執行結果,不須要的可忽略這步。app
django-celery-results
庫pip install django-celery-results
django-celery-results
到項目的settings
中INSTALLED_APPS = ( ..., 'django_celery_results', )
python manage.py migrate django_celery_results
django_celery_results
後端CELERY_CACHE_BACKEND = 'celery' CACHES = { 'celery': { 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', 'LOCATION': 'celery_cache', } }
# proj/proj/views.py from .tasks import celery_func def send_smscode(request): ... ... func.delay() # 執行異步任務 return Response({"message": "OK"})
celery -A proj worker -l info