Django Rest Framework自定义节流类不起作用



我在使用django-restframeworkdjango设置custom throttling时遇到问题
我创建了以下views.py类,其中包含一个带有此自定义节流阀的视图:

from .custom_throttles import *
@api_view(('GET',))
@throttle_classes([LowLevelThrottle])
def home_stats(request):
token = request.data['token']
if token == os.environ['api_token']:
content = {
'users' : len(Profile.objects.all()),
'posts' : len(Post.objects.all()),
'reactions' : len(PostReaction.objects.all())
}

return Response(json.dumps(content), status=status.HTTP_200_OK)
else:
content = {
'error' : 'invalid token'
}

return Response(json.dumps(content), status=status.HTTP_401_UNAUTHORIZED)

这个自定义节流阀是从custom_throttles.py导入的,如下所示:

from rest_framework import throttling
class LowLevelThrottle(throttling.AnonRateThrottle):
scope = 'll'

最后但同样重要的是,这就是我在settings.py文件设置中的一些设置:

CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': [
'rest_framework.throttling.AnonRateThrottle',
'django_project.custom_throttles.LowLevelThrottle'
],
'DEFAULT_THROTTLE_RATES': {
'll': '1/sec',
}
}

我还可以提供以下日志,清楚地显示在这1秒的时间内是如何发出多个请求的。

[24/Aug/2022 07:43:14] "GET /homestats HTTP/1.1" 200 51
[24/Aug/2022 07:43:23] "GET /homestats HTTP/1.1" 200 51
[24/Aug/2022 07:43:23] "GET /homestats HTTP/1.1" 200 51
[24/Aug/2022 07:43:23] "GET /homestats HTTP/1.1" 200 51
[24/Aug/2022 07:43:24] "GET /homestats HTTP/1.1" 200 51
[24/Aug/2022 07:43:24] "GET /homestats HTTP/1.1" 200 51
[24/Aug/2022 07:43:24] "GET /homestats HTTP/1.1" 200 51
[24/Aug/2022 07:43:24] "GET /homestats HTTP/1.1" 200 51
[24/Aug/2022 07:43:24] "GET /homestats HTTP/1.1" 200 51
[24/Aug/2022 07:43:25] "GET /homestats HTTP/1.1" 200 51
[24/Aug/2022 07:43:25] "GET /homestats HTTP/1.1" 200 51
[24/Aug/2022 07:43:25] "GET /homestats HTTP/1.1" 200 51

如果你还有任何问题,请随时提问!

根据用户TrueGopnik的建议,我删除了

CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}

来自CCD_ 7文件。

最新更新