मैं सभी उपयोगकर्ताओं के लिए प्रति 15 मिनट में 100 अनुरोधों के लिए थ्रॉटल दर सेट करने का प्रयास कर रहा हूं।

समस्या यह है कि जब मैं AnonRateThrottle और UserRateThrottle को ओवरराइड करता हूं, तो थ्रॉटलिंग बिल्कुल भी काम नहीं करता है।

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'],
    'DEFAULT_THROTTLE_CLASSES': [
         'rest_framework.throttling.AnonRateThrottle',
         'rest_framework.throttling.UserRateThrottle'
     ],
     'DEFAULT_THROTTLE_RATES': { # I've lowered the rates to test it
         'anon': '2/min',
         'user': '2/min'
     }

}

अच्छी तरह से काम।

यह काम नहीं करता:

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'],
    'DEFAULT_THROTTLE_CLASSES': [
        'api.throttle_rates.AnonHundredPerFifteenMinutesThrottle',
        'api.throttle_rates.UserHundredPerFifteenMinutesThrottle',
    ],
}

   

api.throttle_rates

     from rest_framework.throttling import AnonRateThrottle, UserRateThrottle

    class AnonHundredPerFifteenMinutesThrottle(AnonRateThrottle):
        def parse_rate(self, rate):
            return (2, 60)
    
    
    class UserHundredPerFifteenMinutesThrottle(UserRateThrottle):
        def parse_rate(self, rate):
            return (2,60)

क्या आप जानते हैं कि समस्या कहां है?

0
Milano 9 सितंबर 2020, 19:03

1 उत्तर

सबसे बढ़िया उत्तर

अगर आप allow_request फ़ंक्शन में देखें

self.rate हमेशा None होता है क्योंकि आपने इसे सेट नहीं किया था, इसलिए अनुरोध की अनुमति है

1
iklinac 9 सितंबर 2020, 19:54