上图过程中:请求云通服务器并云通发用户短信这个过程较耗时,所以将这个耗时过程的代码放到一个新的进程中去执行!!
# 异步 - 问题:在视图中如果有耗时的代码,则用户的响应需要等待很长时间--等很久才能得到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
来源:https://www.cnblogs.com/dbslinux/p/12187413.html