Django-drf框架之限流
程序员文章站
2022-07-12 10:34:04
...
前言
这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题
于是乎,我自己开发了一款面试宝典,希望能帮到大家,也希望有更多的Python新人真正加入从事到这个行业里,让python火不只是停留在广告上。
微信小程序搜索:Python面试宝典
或可关注原创个人博客:https://lienze.tech
也可关注微信公众号,不定时发送各类有趣猎奇的技术文章:Python编程学习
限流
匿名用户全局限流
可以对接口访问的频次进行限制,以减轻服务器压力。特别是限制爬虫的抓取。
可以在配置文件中,使用DEFAULT_THROTTLE_CLASSES 和 DEFAULT_THROTTLE_RATES进行全局配置
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': (
# 限制所有匿名未认证用户,使用IP区分用户
'rest_framework.throttling.AnonRateThrottle'
),
'DEFAULT_THROTTLE_RATES': {
# 可以使用 second, minute, hour 或day来指明周期
'anon': '3/minute',
'user': '5/minute'
}
}
匿名用户局部限流
视图中使用throttle_classes
属性设置限流用户类型
from rest_framework.generics import ListAPIView
from rest_framework.throttling import AnonRateThrottle
from .serializer import UserSerializer, User
class UserView(ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
throttle_classes = [AnonRateThrottle] # 指明针对匿名用户进行限流,限流频率全局配置
在项目配置文件中针对用户类型设置具体频率
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_RATES': {
# 可以使用 second, minute, hour 或day来指明周期
'anon': '3/minute',
'user': '5/minute'
}
}
推荐阅读
-
.NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计
-
python+unittest框架第四天unittest之断言(一)
-
SSH框架之Hibernate第二篇
-
Java框架之MyBatis框架
-
Bootstrap整体框架之JavaScript插件架构
-
零基础学习AJAX之AJAX框架
-
从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之七使用JWT生成Token(个人见解)
-
从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之十一Swagger使用一
-
我爱Flask框架之Flask简介与URL和视图介绍
-
MyBatis框架之第一篇