三.3短信-异步执行

喜欢而已 提交于 2020-01-13 16:01:35

 

 

 上图过程中:请求云通服务器并云通发用户短信这个过程较耗时,所以将这个耗时过程的代码放到一个新的进程中去执行!!

# 异步

- 问题:在视图中如果有耗时的代码,则用户的响应需要等待很长时间--等很久才能得到60秒倒计时
- 需要:让用户快速得到响应,倒计时
- 解决:将耗时代码放到异步中执行,如进程、线程、协程
- 新问题:所有底层的代码都已经被框架,如django封装好,此时如何使用异步操作
- 解决:使用celery,封装好了异步的代码

### rabbitmq
- 队列
- 安装rabbitmq
- python虚拟环境中安装包pika
### celery的基础概念
- 构成
  - 代理人broker:指定队列存储到哪里去
  - 工人worker:从队列中取任务执行,本质就是一个新进程、线程、协程
  - 队列queue:放任务,逐个执行----用rabbitmq作队列
  - 任务task:耗时的代码
- 安装celery:pip install celery
- 实现过程:
  - 新建celry_tasks包,用于写任务的代码
  - 新建main.py,创建celery对象
  - 新建config.py,指定配置,当前为指定rabbitmq为队列
  - 新建sms包,新建tasks.py,在这个文件中写任务代码
  - 定义方法send_sms,剪切耗时代码
  - 添加装饰器@app.task()
  - 在main.py中识别这个任务
  - 调用:任务.delay(参数)
  - 新进程:celery -A celery_tasks.main worker -l info

一.安装rabbrtmq

 

 

 二.代码实现---使用celery

 

2.

 

3.

 

4

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!