Дросселирование также перезапускается при перезапуске нашего сервера django

Мне нужна ваша помощь. Я хочу ограничить мой GET API. Сначала я могу использовать этот API только один раз (навсегда с той же системой), затем я регистрируюсь, затем я могу использовать этот же API 5 раз (навсегда с той же системой), затем я должен заплатить некоторую сумму, затем я могу использовать бесконечное количество раз. В это время дроссель не используется.

Ниже приведен мой код: - Settings.py

"DEFAULT_THROTTLE_RATES": { 'Auserlimit': '1/бесконечное', 'userlimit': '5/infinite', }

throttling.py:-

from rest_framework.throttling import AnonRateThrottle, UserRateThrottle импортировать random

class limitAUserThrottle(AnonRateThrottle): scope = 'Auserlimit'

def parse_rate(self, rate):
    """
    Given the request rate string, return a two tuple of:
    <allowed number of requests>, <period of time in seconds>
    """
    if rate is None:
        return (None, None)
    num, period = rate.split('/')
    num_requests = int(num)
    duration = {'s': 1, 'm': 60, 'h': 3600, 'd': 86400, 'i': 315360000000}[period[0]]
    return num_requests, duration

class limitUserThrottle(UserRateThrottle): scope = 'userlimit'

def allow_request(self, request, view):
    if not request.GET.get('call_type') == 'seu':
        self.scope = 'userlimit'
        self.rate = '5/infinite'
        return True
    return super().allow_request(request, view)

def parse_rate(self, rate):
    """
    Given the request rate string, return a two tuple of:
    <allowed number of requests>, <period of time in seconds>
    """
    if rate is None:
        return (None, None)
    num, period = rate.split('/')
    num_requests = int(num)
    duration = {'s': 1, 'm': 60, 'h': 3600, 'd': 86400, 'i': 315360000000}[period[0]]
    return num_requests, duration

views.py:-

throttle_classes = [limitAUserThrottle, limitUserThrottle]

Я использовал эту строку в своем классе API, а также импортировал эти limitAUserThrottle, limitUserThrottle

Вернуться на верх