Implementera en rate limiter
Du bygger ett API för sentimentanalys där användare kan analysera texter för sentiment. För att förhindra missbruk behöver du implementera rate limiting som tillåter maximalt 5 förfrågningar per minut per API-nyckel. Klassen RateLimiter är redan skapad och du ska lägga till metoden is_rate_limited i RateLimiter-klassen, som kontrollerar antalet förfrågningar som gjorts inom ett tidsfönster på 1 minut.
Klasserna datetime och timedelta från biblioteket datetime är redan importerade.
Den här övningen är en del av kursen
Driftsättning av AI i produktion med FastAPI
Övningsinstruktioner
- Hämta aktuell tid och beräkna tidsstämpeln för en minut sedan.
- Filtrera förfrågningslistan så att bara tidsstämplar från den senaste minuten behålls.
- Kontrollera om antalet nyliga förfrågningar överskrider gränsen.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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