乐趣区

关于python:Django电商网站短信验证码

为了避免歹意注册,须要在网站注册中引入短信验证码的性能,总体流程如下

此外,为了优化该过程,须要将 SDK 中发送短信的办法批改为单例类模式,避免高并发时占用大量内存, 示例代码如下

class CCP(object):
    \_\_instance = Fales
    def \_\_new\_\_(cls, *args, **kwargs):
        if not \_instance:
            cls.\_instance = super(CCP,cls).\_\_new\_\_(cls, *args, **kwargs)
            cls.\_instance.rest = REST(\_serverIP, \_serverPort, \_softVersion)
            cls.\_instance.rest.setAccount(\_accountSid, \_accountToken)
            cls.\_instance.rest.setAppId(\_appId)
            return cls.\_instance

def send_template_sms(self,to, datas, tempId):
    result = self.rest.sendTemplateSMS(to, datas, tempId)
    print(result)
    if result.get('statusCode') == '000000':
        return 0
    else:
        return -1

此外,引入 celery 负责发送短信性能,使用户点击发送短信后 页面响应后果同发送短信并行进行,保障主线注册程序的顺利执行。celery 性能优良,可作为验证性能的操作工具。
为了防止歹意用户频繁申请发送短信,须要设置一个 send\_flag 变量,初始值为 False 类比厕所的门是开着的,当发送短信之后 send\_flag 变为 True,存进 Redis 类比为有人进入厕所了,厕所门敞开,当短信过期之后 send\_flag 变量从新变为 false 厕所门又开了,  收到发送短信申请的时候,后端先提取 send\_flag,校验是否为 True,如果是的话,阐明厕所门还是关着的,提醒用户短信发送过于频繁。

退出移动版