class MyMW(MiddlewareMixin):
# 假设桶中最多可以存10个请求
tong = 10
# 假设桶中请求数初始值为0
tong_request = 0
def process_request(self, request):
t = threading.Thread(target=self.handle,args=(request,))
t.start()
# 如果剩余数大于桶容量
if self.tong_request >= self.tong:
print("桶中请求", self.tong_request)
# 将请求抛出,响应失败
return HttpResponse("failed")
# 如果剩余数小于桶的容量,说明可以接收请求
print("现在桶中请求数", self.tong_request)
def process_response(self, request, response):
self.tong_request -=1
return response
def handle(self,request):
# 判断桶中请求数是否 < 桶的容量
if self.tong_request < self.tong:
# 如果小于桶的容量,则往桶中添加请求
self.tong_request += 1
print("现在桶中请求",self.tong_request)
django--中间件模拟漏桶算法 限流
最新推荐文章于 2021-05-19 19:19:04 发布