限流
匿名用户全局限流
可以对接口访问的频次进行限制,以减轻服务器压力。特别是限制爬虫的抓取。
可以在配置文件中,使用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'
}
}