异步验证码总结

本文总结了如何将验证码系统改为异步模式,以避免同步操作导致的程序堵塞。通过Celery异步执行任务,利用Redis存储执行结果,从而减轻主程序压力。在实现过程中,详细介绍了可能遇到的问题及解决方案,包括启动Celery服务、数据库配置、错误处理等。
摘要由CSDN通过智能技术生成

问:  为什么要把验证码改为异步的?

  
答:  和异步相对应的是同步   用户输入验证码的时候要先发送验证码;
会有一个等待的过程; 用户要等待验证码的发送,发送之后要输入验证码;
是这样一个流程; 如果有10000个用户一起发送验证码,会导致程序堵塞,
程序就会中断执行;
(这是同步的弊端)
热然异步是 荣联云发送验证码,用户点击用户验证码 ,获取后端接口,
然后celery异步执行, redis存放执行的结果,直接把redis里面把验证码的,
结果取出来,告诉任务就可以了;(任务就是发送验证码)

celery异步执行大大减少了主程序的压力(不会导致主程序堵塞);
把耗时任务放进redis,有任务直接执行;


                                                     可能会遇到的报错


报错一 : object has no attribute 'decode'
  原因:是没有启动异步项目; 或者是数据库里没有执行的结果信息;取出来的为空;
自然也是不能转码成功了;
解决方法:(celery -A 文件名 worker -l info -P eventlet)
celery -A my_celery.test_celery worker -l info -P eventlet


报错二.添加 这两个字段迁移时 先输入1 ; 然后 输入    timezone.now
created_date = models.DateTimeField(default=now(),verbose_name='注册时间')

    last_ogin_data =  models.DateTimeField(verbose_name='最后登录时间')


三:.
在视图中连接数据库一定要 用 localhost不能用(127.0.0.1); 不然后报错连接不上redis;


                                                      记不住的导包和配置  以及知识盲区 :


1.now 是干啥的

# now表示此时时间;
from django.utils.timezone import now

2.加密查询 和 存储密码


from django.contrib.auth.hashers import make_password,check_password

make_password 加密存储密码 如:
new_pwd = make_password(pwd)  这是对前段传递过来的密码进行加密

check_password 既然是 加密存储; 查询也必须要以这种形式查询密码如:
check_password(pwd, user.password):


3.
构造key从redis中查看执行结果 

key = "celery-task-meta-" + resp.id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值