zoukankan      html  css  js  c++  java
  • 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("恭喜你,你有访问权限")

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

  • 相关阅读:
    [NOI2001]炮兵阵地
    POJ 2411 Mondriaan's Dream
    【模板】割点(割顶)
    [Noip2007]Core树网的核
    2018.09.09模拟总结
    2018.09.08模拟总结
    [USACO11JAN]Roads and Planes
    最优贸易
    [USACO08JAN]Telephone Lines
    Calabash(葫芦娃)
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/11581999.html
Copyright © 2011-2022 走看看