Django:RestFramework之-------频率控制
5.频率控制 5.1频率监控代码实现 import time VISIT_RECORD = {} class VisitThrottle(object): def __init__(self): #定义历史记录,生产环境上,应该将其保存在redis self.history = [] def allow_request(self,request,view): #1.获取用户IP remote_addr = request._request.META.get("REMOTE_ADDR") print(remote_addr) #记录访问时的时间 ctime = time.time() #判断当前IP是否在访问记录中 if remote_addr not in VISIT_RECORD: VISIT_RECORD[remote_addr] = [ctime,] return True #拿取当前访问IP记录 history = VISIT_RECORD.get(remote_addr) #将历史访问时间记录,复制给self.history,以方便wait方法调用,通过wait方法告诉用户一些信息 self.history = history #逻辑判断只记录1分钟内访问记录。 while history and history[-1] < ctime-60: history.pop()