Django_rest-framework节流

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值