DRF的限流功能
限流,可以对接口访问的频次进行限制,以减轻服务器压力。
-
全局配置
在settings.py上添加
REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES': ( 'rest_framework.throttling.AnonRateThrottle', 'rest_framework.throttling.UserRateThrottle' ), 'DEFAULT_THROTTLE_RATES': { # 字典 # 可以使用 second, minute, hour 或day来指明周期 'anon': '100/day', # anon 匿名用户 'user': '1000/day' # user 登录用户 } }
注意:AnonRateThrottle针对匿名用户,即未登录的用户,drf会根据ip来判断访问接口的次数。
UserRateThrottle针对登录用户。
-
针对某个视图设置限流
# 视图集 class DepartmentViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): ... throttle_classes = [ScopedRateThrottle] throttle_scope = 'department' # 这个名字可以随便写,但是要和设置文件中的对应 ... # 设置文件 REST_FRAMEWORK = { ... 'DEFAULT_THROTTLE_CLASSES': ( # 'rest_framework.throttling.ScopedRateThrottle',不能在这里指定! ), # 只对特定的视图限流 'DEFAULT_THROTTLE_RATES': { 'department': '4/minute', } }
代码成就万世基积沙镇海,梦想永在凌云意意气风发。