频率
目录可以对接口访问的频次进行限制,以减轻服务器压力
一般用于付费购买次数,投票等场景使用
1、内置的频率限制
未登录用户访问频次
全局使用:限制未登录用户1分钟访问五次
#settings.py
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': ['rest_framework.throttling.AnonRateThrottle'],
'DEFAULT_THROTTLE_RATES': {
'anon': '5/m',
},
}
# 演示全局未登录用户访问频率
class Test4View(APIView):
authentication_classes = []
permission_classes = []
def get(self, request, *args, **kwargs):
return Response('我是未登录用户')
访问5次后就会出现下图所示:
内置使用:局部未登录用户的访问频次
from rest_framework.throttling import AnonRateThrottle
# 演示局部未登录用户的访问频次
class Test5View(APIView):
authentication_classes = []
permission_classes = []
throttle_classes = [AnonRateThrottle]
def get(self, request, *args, **kwargs):
return Response('我是未登录用户')
内置使用要注释掉全局配置中的下面这句代码
REST_FRAMEWORK = {
# 'DEFAULT_THROTTLE_CLASSES': ['rest_framework.throttling.AnonRateThrottle'],
}
登录用户访问频次
全局使用
#settings.py
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': [
'rest_framework.throttling.UserRateThrottle'
],
'DEFAULT_THROTTLE_RATES': {
'user': '10/m',
},
}
未登录用户一分钟访问5次,登录用户一分钟访问10次
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': [
'rest_framework.throttling.AnonRateThrottle',
'rest_framework.throttling.UserRateThrottle'
],
'DEFAULT_THROTTLE_RATES': {
'user': '10/m',
'anon': '5/m',
},
}
局部配置,
再视图类中配一个就行,禁用的话加中括号就行
# 未登录用户一分钟访问5次,登录用户一分钟访问10次
class Test6View(APIView):
authentication_classes = [SessionAuthentication]
# permission_classes = []
# throttle_classes = [AnonRateThrottle]
def get(self, request, *args, **kwargs):
return Response('我是未登录用户')
标签:THROTTLE,登录,DEFAULT,用户,访问,classes,频率,使用
From: https://www.cnblogs.com/zaosong/p/16971298.html