Implementare un rate limiter
Stai costruendo un'API di sentiment analysis in cui gli utenti possono analizzare testi per rilevarne il sentimento. Per evitare abusi, devi implementare un rate limiting che consenta solo 5 richieste al minuto per ogni API key. La classe RateLimiter è già stata creata e tu devi aggiungere il metodo is_rate_limited all'interno della classe RateLimiter, che controlla quante richieste sono state effettuate nella finestra temporale di 1 minuto.
Le classi datetime e timedelta della libreria datetime sono già state importate.
Questo esercizio fa parte del corso
Deployment di AI in produzione con FastAPI
Istruzioni dell'esercizio
- Ottieni l'ora corrente e calcola il timestamp di un minuto fa.
- Filtra l'elenco delle richieste per mantenere solo i timestamp dell'ultimo minuto.
- Verifica se il numero di richieste recenti supera il limite.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
def is_rate_limited(self, api_key: str) -> bool:
# Get current time and the timestamp for one minute ago
now = _____
minute_ago = now - _____(minutes=1)
# Remove requests older than 1 minute
self.requests[api_key] = [
req_time for req_time in self.requests[api_key]
if req_time > _____]
# Check if no. of requests exceeded the set limit
if len(self.requests[api_key]) ____ self.requests_per_minute:
return True
self.requests[api_key].append(now)
return False