Проблема дросселирования 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]
Вернуться на верх