Inizia subitoInizia gratis

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

Visualizza corso

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
Modifica ed esegui il codice