DRF--频率

简介: 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("恭喜你,你有访问权限")

这样配置好了之后,当我们一分钟超过了三次就会限制我们访问


相关文章
|
9月前
|
JSON JavaScript 前端开发
解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
749 0
|
6月前
|
缓存 中间件 数据库
Django入门到放弃之缓存及信号机制
Django入门到放弃之缓存及信号机制
|
9月前
|
数据采集 搜索推荐 API
python爬虫如何处理请求频率限制?
【2月更文挑战第21天】【2月更文挑战第64篇】python爬虫如何处理请求频率限制?
634 3
|
前端开发
DRF--验证器
DRF--验证器
|
设计模式 Python
Django的信号机制详解
Django的信号机制详解
|
前端开发 JavaScript
Umi 4 特性 03:默认最快的请求
Umi 4 特性 03:默认最快的请求
623 0
|
JSON 网络安全 数据格式
requests库常用到的7个主要方法及控制访问参数
requests库常用到的7个主要方法及控制访问参数
229 0
|
JavaScript 测试技术
JS不靠谱系列: 写一个验证过期时间的函数,包含jest单元测试
我们经常用到的token还是cookie,都默认有一个过期时间 我们做鉴权的时候,很依赖这个,所以捣鼓下能不能再严谨点 因为之前都是以后台固定的格式,直接拿到值做一个简单的判断; 那,假如后台传过来的日期格式变了呢!!有兴趣的瞧瞧。
223 0
|
缓存
DRF-访问频率配置(节流)
访问频率控制(节流) 我们可以先编写一个类 class VisitThrottle(object): def allow_request(self, request, view): return True # False表...
1094 0
|
缓存 中间件 数据库
第25天,Django之缓存、序列化、信号
目录 一、缓存 1. 配置 1.1 开发调试 1.2 内存 1.3 文件 1.4 数据库 1.
1029 0