首页 > 其他 > 详细

中间件控制访问评率

时间:2018-11-15 17:52:20      阅读:225      评论:0      收藏:0      [点我收藏+]

setings设置

MIDDLEWARE = [
    django.middleware.security.SecurityMiddleware,
    django.contrib.sessions.middleware.SessionMiddleware,
    django.middleware.common.CommonMiddleware,
    django.middleware.csrf.CsrfViewMiddleware,
    django.contrib.auth.middleware.AuthenticationMiddleware,
    django.contrib.messages.middleware.MessageMiddleware,
    django.middleware.clickjacking.XFrameOptionsMiddleware,
    mymiddleware.s1.Throttle,  # 自定义中间件
]
ACCESS_LIMIT = 10

 

自定义中间件

from django.conf import settings

ACCESS_RECORD = {} # 自定义访问频率限制的中间件 class Throttle(MiddlewareMixin): def process_request(self, request): access_limit = settings.ACCESS_LIMIT if hasattr(settings, ACCESS_LIMIT) else 60 # 当前请求的IP地址 ip = request.META.get(REMOTE_ADDR) if ip not in ACCESS_RECORD: ACCESS_RECORD[ip] = [] history = ACCESS_RECORD[ip] # 判断最近的10秒钟之内这个IP访问次数是否大于3 now = time.time() # DRF 访问频率限制 while history and now - history[-1] > access_limit: history.pop() history.insert(0, now) if len(history) > 3: return HttpResponse()

 

中间件控制访问评率

原文:https://www.cnblogs.com/yidashi110/p/9964982.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!