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