不会具体使用,请参考:
https://www.cnblogs.com/apollo1616/articles/9892104.html
具体代码如下:
# 限制用户访问次数,每60秒不超过10次 visit_ip_pool = {} class AccessLimitMiddleWare(MiddlewareMixin): def process_request(self, request): ip = request.META.get("REMOTE_ADDR") visit_time = time.time() if ip not in visit_ip_pool: visit_ip_pool[ip] = [visit_time] else: visit_ip_pool[ip].insert(0, visit_time) ip_lst = visit_ip_pool[ip] timecha = ip_lst[0] - ip_lst[-1] print('BEFORE:', ip, '数量:', len(ip_lst), '时间差', timecha) # 如果列表没有值,pop()会报错 # IndexError: pop from empty list while ip_lst and timecha > 60: ip_lst.pop() if len(ip_lst) > 10: return HttpResponse("访问过于频繁...") print('BEFORE:', ip, '数量:', len(ip_lst), '时间差', timecha)