- 继承BaseThrottle类或者根据场景继承其他限流类
- 实现allow_request方法 , 如果请求被允许 , 那么返回True , 否则返回False
- wait方法 , 是否实现根据自己场景
- 获取唯一标识的方法可以使用源码自由的 , 也可以自定义
# 每小时的限流类class UserHourRateThrottle(UserRateThrottle):scope = 'userHour'# 每天的限流类class UserDayRateThrottle(UserRateThrottle):scope = 'userDay'
# settings中进行配置REST_FRAMEWORK = {'DEFAULT_THROTTLE_CLASSES': (# 配置我们自定义的限流类或者再view中进行局部的配置'testApi.throttles.UserHourRateThrottle','testApi.throttles.UserDayRateThrottle'),'DEFAULT_THROTTLE_RATES': {'userHour': '100/hour', # 每小时最多100次'userDay': '1000/day' # 每天最多100次}}
场景案例2随机限制import randomclass RandomRateThrottle(throttling.BaseThrottle):def allow_request(self, request, view):# 如果随机的数字 不等于1 , 返回True , 否则返回Falsereturn random.randint(1, 10) != 1# 之后在settings进行配置或者局部配置
文章插图
【45.限流Throttling及源码解析】
经验总结扩展阅读
- 微服务组件--限流框架Spring Cloud Hystrix分析
- b站限流是什么意思
- 网上的限流是什么意思
- 电信限速不限量套餐 电信不限量套餐是无限流量吗?
- 头条被限流了怎么办?
- 一个手机2个抖音号会限流吗?
- 抖音连续点赞会被限流是什么意思?
- 抖音显示你的视频专属口令是被限流了吗?
- 快手为什么会被限流?
- 抖音连着点赞限流是什么意思?