Проблема дросселирования Django при использовании ManualAPIKey
Я использую Django rest API, в одном из представлений я использую ручную аутентификацию по ключу. Когда я активирую throttling для этого представления, запрос с одного и того же IP адреса с разными API_key считается как от одного и того же пользователя и отклоняется после нескольких раз.
Например: Я установил скорость 12/минута. пользователь1 с IP 20.40.5.6 отправляет 10 запросов в минуту, а пользователь2 с IP 20.40.5.6 отправляют 10 запросов в минуту. Они оба получают ошибку 429 до следующей минуты. Если эти пользователи посылают запросы с разных IP, то проблем нет.
class HasManualAPIKey(BasePermission):
def has_permission(self, request, view):
key = request.META["HTTP_AUTHORIZATION"].split()[1]
keys = MyUser.objects.values_list('key', flat=True)
if key in keys:
return True
else:
return False
class MyUserRateThrottle(UserRateThrottle):
rate= '12/minute'
class MyUserView(APIView):
permission_classes = [HasManualAPIKey]
throttle_classes = [DeviceRateThrottle]