DRF--频率
频率
频率是限制请求访问次数的,比如别人用爬虫爬取我们的网站时,在很短的时间内会产生大量的请求,会大大的增加我们服务器的压力,所以对某些接口,进行频率的限制还是很有必要的。
DRF给我们提供了频率的类,我们可以直接拿来用就可以了,可以在throtting里去看看都给我们提供了哪些类。
from rest_framework import throttling
使用DRF给我们提供的频率类,但要我们改写get_cache_key方法
from rest_framework.throttling import SimpleRateThrottle class MyThrottle(SimpleRateThrottle): scope = "zz" # 值自己定义,会在settings.py里用到 def get_cache_key(self, request, view): # 要重写get_cache_key方法 # 拿IP地址 return self.get_ident(request)
在settings.py里进行全局的配置
REST_FRAMEWORK = { "DEFAULT_THROTTLE_RATES":{ "zz":"3/m" # zz 为自己写的 } }
里面的3/m是什么意思呢?m表示一分钟,3/m表示一分钟只能访问三次,还有一些其他的参数,可以自己设置
{'s': 1, 'm': 60, 'h': 3600, 'd': 86400, }
如果把m改为h,表示一小时只能访问三次
在写个接口
class TestPermission(APIView): authentication_classes = [MyAuth, ] # 认证 permission_classes = [MyPermission, ] # 权限 throttle_classes = [MyThrottle, ] # 频率,一定要有权限才生效 def get(self, request): return Response("恭喜你,你有访问权限")
这样配置好了之后,当我们一分钟超过了三次就会限制我们访问
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)