Django-中间件实现1分钟内只允许三次访问
2024-09-05 04:02:54
代码
class Throttle(MiddlewareMixin): def process_request(self, request):
# 1. 拿到用户请求的IP
# print(request.META)
ip = request.META.get("REMOTE_ADDR")
# 2. 当前请求的时间
now = time.time()
# 3. 记录访问的历史
if ip not in VISIT_RECORD:
VISIT_RECORD[ip] = [] history = VISIT_RECORD[ip]
# [11:07:20, 10:07:11, 10:07:06, 10:07:01]
while history and now - history[-1] > 10:
history.pop()
# 判断用户在一分钟的时间间隔内是否访问超过3次
if len(history) >= 3:
return HttpResponse("滚...")
history.insert(0, now)
最新文章
- Python下使用help(dict),显示'more'不是内部或外部命令,也不是可运行的程序或批处理文件,该如何处理?
- SqlServer2012 数据库的同步之发布+订阅
- div模拟textarea实现高度自增长
- JS添加DOM元素CSS权重BUG
- apache工作模式:prefork和worker
- Hark的数据结构与算法练习之奇偶排序
- pg_rewind 介绍
- 二 J2EE 概述
- There is no Action mapped for namespace [/] and action name [user] associated with context path
- A - 敌兵布阵 - hdu 1166
- myeclipse复制项目
- className.class.getResourceAsStream与ClassLoader.getSystemResourceAsStream区别
- Python3 日期与时间戳相互转换
- ajax(2)
- Jmeter固定定时器(Constant Timer)
- P2347 砝码称重-DP方案数-bitset
- 关于Unity中的Mesh Collider碰撞器
- CRUD的操作,增删改查!
- Linux按照时间顺序列出文件
- js文件引用js文件