Kom igångKom igång gratis

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

Visa kurs

Ö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
Redigera och kör kod