Django 限制使用者訪問頻率的中介軟體的實現

2022-09-29 22:51:23 字數 1385 閱讀 6769

一、定義限制訪問頻率的中介軟體

common/middleware.py

import time

from django.utils.deprecation import mwww.cppcns.comiddlewaremixin

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',

]對使用 rest_framework 框架的專案來說,可以使用框架的設定來對api的訪問頻率進行限制

rest_framework =

}本文標題: django 限制使用者訪問頻率的中介軟體的實現

本文位址:

Django 限制使用者訪問頻率

import time from django.utils.deprecation import middlewaremixin max request per second 2 每秒訪問次數 class requestblockingmiddleware middlewaremixin def p...

Django限制API訪問頻率的幾種思路

需求描述 平台中需要編寫介面供第三方呼叫,需要控制呼叫頻率,需求為5s內呼叫一次後不得再次呼叫。解決思路 1.django官方外掛程式庫中有個django ratelimit外掛程式可以滿足要求,django ratelimit文件位址,很靈活很強大。只需要在我們的views函式上加上 key ip...

日常 nginx訪問頻率限制

去年的事,隨便記記 2017年3月15日 記錄 nginx限制請求頻率 server外面加上 limit req zone binary remote addr zone one 10m rate 1r s 裡面加上 limit req zone one burst 5 解釋 超過頻率的請求會被放到...