我在使用django-restframework
为django
设置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文件。