首页 > 其他分享 >REST framework:限流

REST framework:限流

时间:2024-08-25 16:17:16浏览次数:2  
标签:THROTTLE DEFAULT REST framework 限流 视图 minute

对接口访问的频次进行限制,以减轻服务器压力(反爬虫的一种手段)。

一、前期知识准备

1、限流类型

  • AnonRateThrottle
    • 限制所有匿名未认证用户,使用IP区分用户。
    • 使用DEFAULT_THROTTLE_RATES['anon'] 来设置频次
  • UserRateThrottle
    • 限制认证用户,使用User id 来区分。
    • 使用DEFAULT_THROTTLE_RATES['user']来设置频次
  • ScopedRateThrottle
    • 限制用户对于具体视图的访问频次,通过ip或user id。
    • 视图中使用throttle_scope 指定频次

2、全局配置

  • DEFAULT_THROTTLE_CLASSES:设置限流类型
  • DEFAULT_THROTTLE_RATES:设置限制的频次
REST_FRAMEWORK = {
    # 限流规则
    'DEFAULT_THROTTLE_RATES': {
        'anon': '10/minute',  # 未认证的用户,每分钟10次
        'user': '10000/minute'  # 认证的用户,每分钟10000次
    },
    # 限流策略
    'DEFAULT_THROTTLE_CLASSES': [
        'rest_framework.throttling.AnonRateThrottle',
        'rest_framework.throttling.UserRateThrottle'
    ],
}
  • 频率周期
    • second:每秒
    • minute:每分钟
    • hour:每小时
    • day:每天

3、局部配置

REST_FRAMEWORK = {
    'DEFAULT_THROTTLE_RATES': {
        'user': '3/minute'
    }
}

二、实操

1、全局配置生效(针对项目的所有接口)

在settings.py文件下面,添加如下:

REST_FRAMEWORK = {

    # 限流策略
    'DEFAULT_THROTTLE_CLASSES': [
        'rest_framework.throttling.AnonRateThrottle',
        'rest_framework.throttling.UserRateThrottle',
        'rest_framework.throttling.ScopedRateThrottle',
    ],
    # 限流规则
    'DEFAULT_THROTTLE_RATES': {
        'anon': '10/minute',  # 未认证的用户,每分钟10次
        'user': '10000/minute'  # 认证的用户,每分钟10000次
        'durant': '4/minute',  #此前面的key:durant,自定义
    },
}    

2、局部配置生效(针对某个视图类)

class UserView(ModelViewSet):
    # 指定模型类查询集
    queryset = UserInfo.objects.all()
    # 指定序列化器类
    serializer_class = UserInfoSerializer


    # 类视图中指定限流类型---认证用户
    throttle_classes = (UserRateThrottle,)

    # 类视图中指定限流类型---匿名用户
    throttle_classes = (UserRateThrottle,)

    # 类视图中指定限流类型---IP,下面的value需和settings配置的值一致
    throttle_scope = 'durant' 

 

标签:THROTTLE,DEFAULT,REST,framework,限流,视图,minute
From: https://www.cnblogs.com/Durant0420/p/18378876

相关文章

  • Ruby Web服务开发:构建高效RESTful API的秘诀
    标题:RubyWeb服务开发:构建高效RESTfulAPI的秘诀Ruby作为一种灵活、高效的编程语言,通过其丰富的库和框架,为开发Web服务提供了强大的支持。本文将深入探讨如何在Ruby中开发Web服务,特别是RESTfulAPI。我们将从基础概念讲起,逐步深入到框架选择、路由配置、控制器编写、模型设......
  • 利用Spring Boot实现微服务的API网关统一限流与熔断
    利用SpringBoot实现微服务的API网关统一限流与熔断大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!微服务中的限流与熔断在微服务架构中,服务的稳定性和可靠性至关重要。限流用于控制服务的访问频率,防止过载;熔断则在服务出现异常时介入,防止故障蔓延......
  • REST framework:分页
    RESTframework提供了分页的支持一、全局配置(不建议使用)在配置文件中设置全局的分页方式:REST_FRAMEWORK={'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination','PAGE_SIZE':10#每页数据量}二、局部配置在不同的视图中可以......
  • REST framework:排序过滤器的使用
    对于列表数据,RESTframework提供了OrderingFilter过滤器来帮助我们快速指明数据按照指定字段进行排序1、在setting中的REST_FRAMEWORK添加配置'DEFAULT_FILTER_BACKENDS':(#这个是指定使用django_filters中的过滤器来进行过滤'django_filters.rest_framework.DjangoFilte......
  • REST framework:过滤
    一、数据准备模型类classUserInfo(models.Model):name=models.CharField(max_length=20,verbose_name='用户名')pwd=models.CharField(max_length=18,verbose_name='密码')email=models.EmailField(max_length=40,verbose_name='邮箱�......
  • REST framework:接口文档
    RESTframework通过第三方库可以自动帮助我们生成网页版的接口文档,自动接口文档能生成的是继承自APIView及其子类的视图1、安装依赖RESTframewrok生成接口文档需要coreapi库的支持 pipinstallcoreapi-ihttp://mirrors.aliyun.com/pypi/simple/--trusted-hostmirrors.......
  • 利用Spring Boot实现微服务的API限流策略
    利用SpringBoot实现微服务的API限流策略大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!API限流是一种控制访问速率的机制,用于保护后端服务不被过载。SpringBoot提供了多种工具和方法来实现API限流策略。API限流的概念API限流通常通过限制在一定......
  • NSSCTF [HNCTF 2022 Week1]Interesting_include
    <?php//WEB手要懂得搜索//flagin./flag.phpif(isset($_GET['filter'])){$file=$_GET['filter'];if(!preg_match("/flag/i",$file)){die("error");}include($file);}else{highlight_file(__......
  • 对四种限流算法的思考和总结
    对四种限流算法的思考和总结固定窗口限流是什么:指定一个单位时间内允许多少次操作来限流优点:简单缺点:假如设置了一分钟允许10次操作,但是第一秒就操作了10次。或者第59秒来了10次操作,紧接着第61秒又来了10次这样的话就形成了流量突刺滑动窗口限流把上面的单位时间......
  • 利用Spring Boot的RestTemplate进行REST客户端开发
    利用SpringBoot的RestTemplate进行REST客户端开发大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在微服务架构中,服务之间的通信通常通过RESTAPI来实现。SpringBoot提供了RestTemplate,这是一个用于同步客户端REST请求的类。本文将介绍如何使用Spri......