官方参考文档: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 osfrom celery import Celeryfrom __future__ import absolute_import, unicode_literalsos.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_literalsfrom .celery import app as celery_app__all__ = ['celery_app']
第三步
在myapp/
下创建自己的任务模块tasks.py
,编写任务函数并用@shared_task
装饰,代码如下:
from __future__ import absolute_import, unicode_literalsfrom celery import shared_task@shared_taskdef 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.pyfrom .tasks import celery_funcdef send_smscode(request): ... ... func.delay() # 执行异步任务 return Response({"message": "OK"})
启动 Celery 工作进程
celery -A proj worker -l info