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
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