官方参考文档:https://docs.celeryproject.or…
注意: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