Дросселирование также перезапускается при перезапуске нашего сервера 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