虽然Django3.x开始已经部分支持异步任务了,但是还是不够完善,所以如果您需要执行大量或长时间运行的任务,还是推荐使用Celery,而且Celery还可以设置计划任务。
在本文中,我们主要讲如何把Celery集成到Django并执行异步任务,Celery的消息队列和任务结果我们都使用redis来存储,假设我们的Django项目目录结构如下:
- myproj/
- manage.py
- myproj/
- __init__.py
- settings.py
- urls.py
- celery.py #稍后添加
- app1/
- models.py
- views.py
- tasks.py #稍后添加
......
第一步,安装celery和python操作redis的客户端:
[root@myproj ~]# pip install celery redis
第二步,在myproj/myproj/settings.py添加Celery需要变量
#Celery参数设定
CELERY_BROKER_URL = 'redis://localhost' # 消息中间件控制使用redis
CELERY_CACHE_BACKEND = 'redis://localhost' #缓存用redis存储
CELERY_RESULT_BACKEND = 'redis://localhost' #执行结果,也使用redis存储,之后的文章中我们将介绍使用数据库保存
CELERY_TASK_TRACK_STARTED = True #打开任务开始状态标记
CELERY_TASK_TIME_LIMI