首页 > 其他 > 详细

django限流全局和单个视图

时间:2021-01-29 15:18:24      阅读:30      评论:0      收藏:0      [点我收藏+]

全局匿名和用户节流:

技术分享图片

 

 

    # 限流
    ‘DEFAULT_THROTTLE_CLASSES‘: [
        ‘rest_framework.throttling.AnonRateThrottle‘,
        ‘rest_framework.throttling.UserRateThrottle‘
    ],
    ‘DEFAULT_THROTTLE_RATES‘: {
        ‘anon‘: ‘300/day‘,  # 匿名用户
        ‘user‘: ‘5000/day‘  # 用户
    }

  

# 单个视图限流:

ScopedRateThrottle

ScopedRateThrottle类可用于限制访问API的特定部分。仅当所访问的视图包含.throttle_scope属性时,才会应用此限制然后,通过将请求的“范围”与唯一的用户ID或IP地址串联起来,即可形成唯一的限制键。

允许的请求速率由DEFAULT_THROTTLE_RATES设置使用请求“范围”中的键确定

例如,给定以下视图...

class ContactListView(APIView):
    throttle_scope = ‘contacts‘
    ...

class ContactDetailView(APIView):
    throttle_scope = ‘contacts‘
    ...

class UploadView(APIView):
    throttle_scope = ‘uploads‘
    ...

...以及以下设置。

REST_FRAMEWORK = {
    ‘DEFAULT_THROTTLE_CLASSES‘: [
        ‘rest_framework.throttling.ScopedRateThrottle‘,
    ],
    ‘DEFAULT_THROTTLE_RATES‘: {
        ‘contacts‘: ‘1000/day‘,
        ‘uploads‘: ‘20/day‘
    }
}

用户每天对一个请求的请求ContactListViewContactDetailView将被限制为总共1000个请求。用户对的请求UploadView将被限制为每天20个请求。

官方文档:

https://www.django-rest-framework.org/api-guide/throttling/

django限流全局和单个视图

原文:https://www.cnblogs.com/SunshineKimi/p/14343990.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!