celery的简介
- celery介绍
- 用户发起request,并等待response返回。在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验,比如发送邮件、手机验证码等。使用celery后,情况就不一样了,将耗时的程序放到celery中执行。主程序继续执行其他功能。
- celery和django的关系
- 任务task:就是一个Python函数,定义需要交给celery处理的任务。
- 队列queue:需要worker执行的任务会先加到queue中。
- 工人worker:在一个新进程中,负责从queue中取出任务执行。
- 代理人broker:负责调度,在布置环境中使用redis,用来存储queue列队。
配置celery
- 安装celery相关的包
- 在setting中安装celery应用
- 在setting中配置任务和代理模块
- import djcelery
- 配置celery环境
- 配置中间人的url路径
- 配置任务查找路径
使用selery代理任务
- 在应用的目录下创建tasks.py的文件,并创建应用的celery任务
- @task: 对函数进行装饰,声明该函数是通过celery worker来执行的函数
- 在视图函数中调用celery任务
- 调用celery任务要在函数名后面加.delay,表示通过celery异步执行任务;
- 因为task函数是在woker中执行的,我们在函数内生成的一些变量,在worker中可能因为没有我们使用的方法和函数,不能获取到,所以我们使用的变量等,都通过参数传递给task任务;
- 开启服务器
- python manage.py runserver
- 开启redis服务
- sudo service redis start
- 启动celery-worker
- python manage.py celery worker -l info
- -l info 表示打开日志