zoukankan      html  css  js  c++  java
  • Django中间件限制用户访问频率

    原:https://blog.csdn.net/weixin_38748717/article/details/79095399

    一、定义限制访问频率的中间件

    • common/middleware.py
    import time
    
    from django.utils.deprecation import MiddlewareMixin
    
    MAX_REQUEST_PER_SECOND=2 #每秒访问次数
    
    class RequestBlockingMiddleware(MiddlewareMixin):
    
        def process_request(self,request):
            now=time.time()
            request_queue = request.session.get('request_queue',[])
            if len(request_queue) < MAX_REQUEST_PER_SECOND:
                request_queue.append(now)
                request.session['request_queue']=request_queue
            else:
                time0=request_queue[0]
                if (now-time0)<1:
                    time.sleep(5)
    
                request_queue.append(time.time())
                request.session['request_queue']=request_queue[1:]

    二、将中间件加入配置文件

    • setting.py
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'common.middleware.RequestBlockingMiddleware', #在sessions之后,auth之前
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
  • 相关阅读:
    武功秘籍 蓝桥杯
    切面条 蓝桥杯
    啤酒和饮料 蓝桥杯
    蚂蚁感冒 蓝桥杯
    hdu N!
    hdu 神、上帝以及老天爷
    ListView滑动删除 ,仿腾讯QQ
    C++ 习题 输出日期时间--友元函数
    C++习题 商品销售
    渠道运营一点事
  • 原文地址:https://www.cnblogs.com/guoyunlong666/p/9612970.html
Copyright © 2011-2022 走看看