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

此外,为了优化该过程,须要将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,如果是的话,阐明厕所门还是关着的,提醒用户短信发送过于频繁。