官方參考文件:docs.celeryproject.org/en/stable/d...
注意:Celery 4.0支援Django 1.8和更高版本。對於Django 1.8之前的版本,請使用Celery 3.1。
一、安裝
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
檔案下匯入上面建立的模組, 程式碼如下:
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
第四步
儲存任務執行結果,不需要的可忽略這步。
- 安裝
django-celery-results
庫
pip install django-celery-results
- 新增
django-celery-results
到專案的settings
中
INSTALLED_APPS = (
...,
'django_celery_results',
)
- 執行資料庫遷移建立Celry資料表
python manage.py migrate django_celery_results
- 配置 Celery 使用
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 工作程式
celery -A proj worker -l info
本作品採用《CC 協議》,轉載必須註明作者和本文連結