代码

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)

最新文章

  1. Python下使用help(dict),显示'more'不是内部或外部命令,也不是可运行的程序或批处理文件,该如何处理?
  2. SqlServer2012 数据库的同步之发布+订阅
  3. div模拟textarea实现高度自增长
  4. JS添加DOM元素CSS权重BUG
  5. apache工作模式:prefork和worker
  6. Hark的数据结构与算法练习之奇偶排序
  7. pg_rewind 介绍
  8. 二 J2EE 概述
  9. There is no Action mapped for namespace [/] and action name [user] associated with context path
  10. A - 敌兵布阵 - hdu 1166
  11. myeclipse复制项目
  12. className.class.getResourceAsStream与ClassLoader.getSystemResourceAsStream区别
  13. Python3 日期与时间戳相互转换
  14. ajax(2)
  15. Jmeter固定定时器(Constant Timer)
  16. P2347 砝码称重-DP方案数-bitset
  17. 关于Unity中的Mesh Collider碰撞器
  18. CRUD的操作,增删改查!
  19. Linux按照时间顺序列出文件
  20. js文件引用js文件

热门文章

  1. vue.js移动端app:初始配置
  2. spark集群安装并集成到hadoop集群
  3. adb链接时报错误10061解决方法
  4. nodejs 入门学习
  5. (二)Redis之Jedis概念和HelloWorld实现以及JedisPool的使用
  6. DotNet跨平台 - docker部署.net core2.0项目
  7. 通过Kubeadm搭建Kubernetes集群
  8. SpringCloud之Zuul网关原理及其配置
  9. EBS R12.2系统logo的修改
  10. linux /etc/shadow文件详解