官方参考文档: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