节流控制

节流器

  • BaseThrottle
    • allow_request
      • 是否允许的请求的核心
    • get_ident
      • 获取客户端唯一标识
    • wait
  • SimpleRateThrottle
    • get_cache_key
      • 获取缓存标识
    • get_rate
      • 获取频率
    • parse_rate
      • 转换频率
        • num/duration
          • duration
            • s
            • m
            • h
            • d
    • allow_request
      • 是否允许请求
      • 重写的方法
    • throttle_success
      • 允许请求,进行请求记录
    • throttle_failure
      • 不允许请求
    • wait
      • 还有多少时间之后允许
  • AnonRateThrottle
    • get_cache_key
      • 获取缓存key的原则
  • UserRateThrottle
    • 和上面一模一样
  • ScopedRateThrottle
    • 和上面一样
    • 多写了从属性中获取频率

示例

在app目录下 我们新建一个文件 比如叫thottle.py

from django.contrib.auth.models import User
from rest_framework.throttling import SimpleRateThrottle


class MyThrottle(SimpleRateThrottle):
    scope = "test"
    # THROTTLE_RATES = {
    #     "test": "5/m"
    # }
    def get_cache_key(self, request, view):
        if isinstance(request.user, User):
            ident = request.auth
        else:
            ident = self.get_ident(request)

        return self.cache_format % {
            'scope': self.scope,
            'ident': ident
        }

那么在views.py的API中 我们就可以使用了

# 获取当前用户创建的书籍 要包括用户信息和他所有相关书籍的数据
class UserBookAPI(ListAPIView):

    serializer_class = UserBookSerializer
    queryset = User.objects.all()
    authentication_classes = (LoginAuth, )
    throttle_classes = (MyThrottle,)
    def list(self, request, *args, **kwargs):
        user = request.user
        serializer = UserBookSerializer(user)
        return Response(serializer.data)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值