代码gitee仓库:代码仓库
一, 为什么要使用celery异步发送短信?
发送短信是耗时操作,影响响应时间,响应延迟会造成用户界面的倒计时延迟。
二,实现目的。
用户点击完获取后,视图越快响应,就能越快显示倒计时,加快短信发送到用户的时间。
三,celery异步发送短信—过程。
1.python3安装celery(环境:windows10;python版本:python3.9)
pip install -U Celery
2.在项目根目录创建一个单独的包,用来存放celery相关的配置文件和主要代码。
3.在新创建的celery_tasks(名字随意)包下创建main.py文件,在main.py文件中需要配置的有:
3.1 设置django环境。
3.2 创建celery对象。
3.3 设置 broker。
3.4 celery自动检测任务。
import os
# 1 设置django环境
# set the default Django settings module for the 'celery' program.
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'meiduo.settings')
# 2 创建celery对象
app = Celery('celery_tasks')
# 3 设置 broker
app.config_from_object("celery_tasks.config")
# 4celery自动检测任务 这里会自动去celery_tasks.sms下找tasks.py
app.autodiscover_tasks(['celery_tasks.sms'])
4.在celery_tasks包下创建config.py文件,存放作为broker的redis配置。
5.在celery_tasks包下创建sms(名字随意)包,在新创建的sms包内创建tasks.py(名字固定)文件。
(@app.task是在main.py中创建的对象,这里进行调用;
SmsUtil().send_message()是在上片博客中utils工具包下的SendMessage文件中的类,这里进行导入调用,传入用户手机号和验证码,2是设定的有效期两分钟)
6.在终端启动celery服务。
cd 总工程目录下
celery -A celery_tasks.main worker -l info
如图所示启动成功。
7.在前面子应用下的views.py文件中找到发送短信的逻辑视图,
调用刚配置好的发短信任务。
8.在新的终端中启动django服务,前面开启celery服务的终端不能关。
python manage.py runserver
9.启动前端页面服务器。
python -m http.server 8080
四,进行注册。
手机收到验证码,延迟在五秒钟左右,前端页面计时器实现实时跳转。