为了避免歹意注册,须要在网站注册中引入短信验证码的性能,总体流程如下
此外,为了优化该过程,须要将 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,如果是的话,阐明厕所门还是关着的,提醒用户短信发送过于频繁。