一、原理
首先图片中的客户端代表需要提高并发的服务器,Broker队列通常保存任务,一般使用Redis/RabbitMQ实现,任务处理者便是Celery实例了
如图:celery客户端遇到耗时操作任务的时候,直接将任务发送到Broker(中间人)来协client(任务的发出者)和worker(任务的处理者)。需要注意的是,Celery在DRF中是以单独的应用出现的,拥有自己的空间,一旦client将任务推送Broker,client就会处理其他请求,完成高度并发并不等待client用户io操作。
二、实现
首先我们得安装Celery应用
我们可以使用python的包管理器pip来安装:
pip install -U Celery
也可从官方直接下载安装包:Celery官网
tar xvfz celery-0.0.0.tar.gz
cd celery-0.0.0
python setup.py build
python setup.py install
1、搭建Celery应用
我们要在项目的同级目录搭建新的独立的Celery应用,首先我们需要创建一个celery_tasks的包,并在celery_tasks/目录下创建main.py作为Celery的启动文件,创建config.py作为Celery的配置文件。同时把我们需要处理的业务(以msg发送短信为例)放到celery_tasks/下,并为其创建tasks.py。注意tasks.py不允许重命名。最终的目录搭建结构如下图
2、main.py
from celery import Celery
# 为celery使用django配置文件进行设置,根