Django_rest-framework节流

文章目录

    • 创建节流类函数,可实现局部节流
    • 配置settings,全局节流
    • 可选限流类

创建节流类函数,可实现局部节流

from rest_framework.throttling import SimpleRateThrottle

class MyThrottle(SimpleRateThrottle):
    rate = '5/m'  # 请求次数/时间段 (s,m,h,d)
    scope = 'MyThrottle'
    def get_cache_key(self, request, view):
        print("dddddd")
        # print(request.user.__dict__)
        #根据用户ID,登录不限制,不登录限制每分钟5次
        if request.user and request.user.id:
            return None  # 返回None,没有次数限制
        else:
            return 1   # 未登录用户

配置settings,全局节流

REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': ['rest_framework.throttling.AnonRateThrottle'],
'DEFAULT_THROTTLE_RATES': {
	   'vistor': '3/m',
       'anon': '2/day',# 匿名用户
    },
}

可选限流类

1> AnonRateThrottle
限制所有匿名未认证用户,使用IP区分用户
使用DEFAULT_THROTTLE_RATES[‘anon’]来设置频次
2> UserRateThrottle
限制认证用户,使用user id区分
使用DEFAULT_THROTTLE_RATES[‘user’]来设置频次
3>ScopedRateThrottle
限制用户对于每个视图的访问频次,使用ip或user id

你可能感兴趣的:(Django,python)