LoslegenKostenlos loslegen

Rate Limiting implementieren

Du baust eine Sentiment-Analyse-API, mit der Nutzer Texte auf Stimmungen analysieren können. Um Missbrauch zu verhindern, musst du Rate Limiting implementieren, das pro API-Schlüssel nur 5 Anfragen pro Minute zulässt. Die Klasse RateLimiter ist bereits erstellt. Du sollst die Methode is_rate_limited innerhalb der Klasse RateLimiter implementieren, die prüft, wie viele Anfragen im 1-Minuten-Zeitfenster gestellt wurden.

Die Klassen datetime und timedelta aus der Bibliothek datetime wurden bereits importiert.

Diese Übung ist Teil des Kurses

KI in der Produktion mit FastAPI bereitstellen

Kurs anzeigen

Anleitung zur Übung

  • Hole die aktuelle Zeit und berechne den Zeitstempel für vor einer Minute.
  • Filtere die Anfrageliste, sodass nur Zeitstempel der letzten Minute übrig bleiben.
  • Prüfe, ob die Anzahl der jüngsten Anfragen das Limit überschreitet.

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