Aan de slagBegin gratis

Een rate limiter implementeren

Je bouwt een sentimentanalyse-API waarmee gebruikers teksten kunnen analyseren op sentiment. Om misbruik te voorkomen, moet je rate limiting implementeren die slechts 5 verzoeken per minuut per API-sleutel toestaat. De RateLimiter-klasse is al aangemaakt en jij moet de methode is_rate_limited toevoegen binnen de RateLimiter-klasse die controleert hoeveel verzoeken er zijn gedaan binnen het tijdsvenster van 1 minuut.

De klassen datetime en timedelta uit de datetime-bibliotheek zijn al vooraf geïmporteerd.

Deze oefening maakt deel uit van de cursus

AI in productie brengen met FastAPI

Bekijk cursus

Oefeninstructies

  • Haal de huidige tijd op en bereken de timestamp van één minuut geleden.
  • Filter de verzoekenlijst zodat alleen timestamps van de laatste minuut overblijven.
  • Controleer of het aantal recente verzoeken de limiet overschrijdt.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

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
Code bewerken en uitvoeren