首页 > 其他分享 >5. DRF 限流

5. DRF 限流

时间:2024-07-12 15:55:12浏览次数:12  
标签:permission self request 限流 result DRF

目录

Django DRF 限流

1. 使用

1.1 设置认证全局变量

在settings.py添加如下代码


REST_FRAMEWORK = {
    "DEFAULT_THROTTLE_CLASSES": ['utils.throttle.MineThrottle']
}

1.2 为单个视图方法设置权限

class Home2(APIView):
    throttle_classes = [MineThrottle]
    permission_classes = [MinePermission, MinePermission1, MinePermission2]

    def check_permissions(self, request):
        permission_result = []
        for permission in self.get_permissions():
            permission_result.append(permission.has_permission(request, self))
            if True not in permission_result:
                self.permission_denied(
                    request,
                    message=getattr(permission, 'message', None),
                    code=getattr(permission, 'code', None)
                )

    def get(self, reqeust):
        return JsonResponse({"status": True, 'data': 'OK'})

    def post(self, request):
        print(request.user, request.auth)
        return JsonResponse({"status": True, 'data': 'OK'})

1.3 限制用户一小时只能访问五次

标签:permission,self,request,限流,result,DRF
From: https://www.cnblogs.com/khalil12138/p/18298554

相关文章

  • Java Redis多限流
    JavaRedis多限流在Java中实现Redis多限流通常涉及使用Redis的某些特性,如INCR、EXPIRE、Lua脚本或者更高级的Redis数据结构如RedisBitmaps、RedisStreams结合RedisPub/Sub,或者使用Redis的第三方库如RedisRateLimiter(基于Lua脚本或Redis自身功能实现)。然而,为了直接和易于实现......
  • drf 中url包含多个动态参数
    from.importviewsfromdjango.urlsimportpath,re_pathfrom.importviewsurlpatterns=[path('v2/sendSms',views.SendSmsAPIView.as_view(),name='sendSms'),path('v2/sendSmsPa',views.SendSmsPaAPIView.as_view(),......
  • DRF 前后端分离项目如何解决CSRF 数据交互
    ★背景说明在DjangoRESTframework(DRF)前后端分离项目中,解决CSRF问题通常有以下几种方法:1.禁用CSRF验证,但这会降低安全性。(不推荐)2.使用csrftokencookie3.在前端每次POST、PUT或DELETE请求前先发起一个GET请求(GET请求不需要经过CSRF检查)获取CSRFToken并将响......
  • Sentinel限流算法总结
    文章目录一、线程隔离二、滑动窗口算法三、令牌桶算法四、漏桶算法一、线程隔离线程隔离有两种方式实现:线程池隔离:给每个服务调用业务分配一个线程池,利用线程池本身实现隔离效果信号量隔离:不创建线程池,而是计数器模式,记录业务使用的线程数量,达到信号量上限时,禁止新......
  • 限流算法
    限流的手段通常有计数器、漏桶、令牌桶。注意限流和限速(所有请求都会处理)的差别,视业务场景而定。(1)计数器:在一段时间间隔内(时间窗/时间区间),处理请求的最大数量固定,超过部分不做处理。(2)漏桶:漏桶大小固定,处理速度固定,但请求进入速度不固定(在突发情况请求过多时,会丢弃过多的请求)。(3)令......
  • 流量守卫:探索Memcached的限流策略
    流量守卫:探索Memcached的限流策略在现代的分布式系统中,Memcached作为一种高性能的分布式内存缓存系统,扮演着至关重要的角色。然而,随着访问量的增加,限流成为了确保Memcached稳定运行的关键策略。本文将深入探讨Memcached的限流策略,通过详细的解释和示例代码,揭示如何有效控制......
  • 流量守卫:探索Memcached的限流策略
    流量守卫:探索Memcached的限流策略在现代的分布式系统中,Memcached作为一种高性能的分布式内存缓存系统,扮演着至关重要的角色。然而,随着访问量的增加,限流成为了确保Memcached稳定运行的关键策略。本文将深入探讨Memcached的限流策略,通过详细的解释和示例代码,揭示如何有效控制......
  • DRF 报错:RuntimeError: Model class django.contrib.contenttypes.models.ContentType
    该错误发生于将'django.contrib.contenttypes'注释之后该组件的功能见如下链接:https://www.cnblogs.com/xiugeng/p/9831665.htmldrf的APIView内部会走认证源码,相关代码导致的报错,怎么解决呢?就是在settings.py中配置上如下两个参数(匿名用户和认证)即可:https://www.cnblogs.com/N......
  • Django REST framework安全实践:轻松实现认证、权限与限流功能
    系列文章目录Django入门全攻略:从零搭建你的第一个Web项目DjangoORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作DjangoORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解DjangoORM深度游:探索多对一、一对一与多对多数据关系的奥秘与实践跨域问题与Django解......
  • 使用Sentinel进行服务调用的熔断和限流管理(SpringCloud2023实战)
    你好,这里是codetrend专栏“SpringCloud2023实战”。本文简单介绍SpringCloud2023中使用Sentinel进行限流管理。前言随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控......