LoslegenKostenlos starten

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

<Kurs>KI in der Produktion mit FastAPI bereitstellen</Kurs>
Kurs ansehen

Übungsanweisungen

  • 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 praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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