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

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


相关文章
|
29天前
|
安全
Bently Nevada 140482-02动态压力I/O模块适用于3500/64
3500/64M动态压力监视器是一款单槽、四通道设备,用于接收高温压力传感器输入并驱动报警。支持通过3500框架配置软件调整带通转折频率和陷波滤波器,提供记录器输出,确保机器安全运行,同时为操作和维护人员提供关键信息。
|
3月前
|
NoSQL 算法 Java
接口限流是一种控制访问频率的技术
在高并发场景下,合理的接口限流、防重复提交及接口防抖机制对保障系统稳定性至关重要。本文介绍了如何利用AOP在不改变业务代码的前提下,灵活添加这些功能。具体包括:通过`@AccessLimit`注解实现接口限流,利用Redis进行计数与控制;通过`@RepeatSubmit`注解防止重复提交,确保数据一致性;通过`@AntiShake`注解实现接口防抖,提升用户体验。此外,提供了基于Redisson和Spring Cloud的实现示例。
60 4
|
4月前
|
缓存 中间件 数据库
Django入门到放弃之缓存及信号机制
Django入门到放弃之缓存及信号机制
|
7月前
|
数据采集 搜索推荐 API
python爬虫如何处理请求频率限制?
【2月更文挑战第21天】【2月更文挑战第64篇】python爬虫如何处理请求频率限制?
576 3
|
前端开发 安全 API
DRF--介绍和安装
DRF--介绍和安装
|
前端开发
DRF--验证器
DRF--验证器
|
JSON 前端开发 网络架构
DRF--请求和响应
DRF--请求和响应
|
资源调度 分布式计算 算法
|
JSON 网络安全 数据格式
requests库常用到的7个主要方法及控制访问参数
requests库常用到的7个主要方法及控制访问参数
211 0