Django API:在一定数量的请求之后撤销令牌

Django API:在一定数量的请求之后撤销令牌,django,api,rest,Django,Api,Rest,我正在尝试编写一个API,它将接收一个字符串或字符串列表,并返回模型的预测。我使用令牌身份验证是为了方便使用,但是,我不明白/无法想象如何限制用户每月可以发出的请求量。或者向匿名用户发出有限数量的请求。我应该创建自定义权限类吗 ### settings.py ## INSTALLED_APPS = [ # basics 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contentty

我正在尝试编写一个API,它将接收一个字符串或字符串列表,并返回模型的预测。我使用令牌身份验证是为了方便使用,但是,我不明白/无法想象如何限制用户每月可以发出的请求量。或者向匿名用户发出有限数量的请求。我应该创建自定义权限类吗

### settings.py ##
INSTALLED_APPS = [
    # basics 
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',

    # API
    'rest_framework',
    'rest_framework.authtoken',       # auth
    'rest_framework_tracking',        # logging 
]

有一个节流,您可以使用默认节流速率或创建自定义节流速率

REST_FRAMEWORK = {
    'DEFAULT_THROTTLE_CLASSES': [
        'rest_framework.throttling.AnonRateThrottle',
        'rest_framework.throttling.UserRateThrottle'
    ],
    'DEFAULT_THROTTLE_RATES': {
        'anon': '100/day',
        'user': '1000/day'
    }
}
您可以在API中使用这些速率

from rest_framework.response import Response
from rest_framework.throttling import UserRateThrottle
from rest_framework.views import APIView

class ExampleView(APIView):
    throttle_classes = [UserRateThrottle]

    def get(self, request, format=None):
        content = {
            'status': 'request was permitted'
        }
        return Response(content)

我认为本文档可能会帮助您,

虽然这在理论上可以回答这个问题,但可以在此处包含答案的基本部分,并提供链接供参考。@ArghyaSadhu我同意您的观点,但我认为我不应该从头开始编写API,我不想复制示例,但现在就可以了。谢谢。我看了一下,但是这个方法似乎只使用缓存。没有任何内容保存到数据库中,因此我无法每月跟踪每个用户的请求。
from rest_framework.response import Response
from rest_framework.throttling import UserRateThrottle
from rest_framework.views import APIView

class ExampleView(APIView):
    throttle_classes = [UserRateThrottle]

    def get(self, request, format=None):
        content = {
            'status': 'request was permitted'
        }
        return Response(content)