LoslegenKostenlos loslegen

Implementierung eines Ratenbegrenzers

Du entwickelst eine API zur Sentimentanalyse, mit der Nutzer Texte auf ihre Stimmung hin analysieren können. Um Missbrauch zu vermeiden, musst du eine Ratenbegrenzung einrichten, die nur 5 Anfragen pro Minute und API-Schlüssel zulässt. Die Klasse „ RateLimiter ” ist schon da und du musst die Methode „ is_rate_limited ” in die Klasse „ RateLimiter ” packen, die die Anzahl der Anfragen überprüft, die innerhalb von einer Minute reingekommen sind.

Die Klassen „ datetime “ und „ timedelta “ aus der Bibliothek „ datetime “ wurden schon importiert.

Diese Übung ist Teil des Kurses

KI mit FastAPI in die Produktion bringen

Kurs anzeigen

Anleitung zur Übung

  • Hol die aktuelle Zeit und rechne den Zeitstempel für vor einer Minute aus.
  • Filtere die Anforderungsliste, um nur Zeitstempel aus der letzten Minute zu behalten.
  • Schau mal, ob die Anzahl der letzten Anfragen das Limit überschritten hat.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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 bearbeiten und ausführen