Een rate limiter implementeren
Je bouwt een sentimentanalyse-API waarmee gebruikers teksten kunnen analyseren op sentiment. Om misbruik te voorkomen, moet je rate limiting implementeren die slechts 5 verzoeken per minuut per API-sleutel toestaat. De RateLimiter-klasse is al aangemaakt en jij moet de methode is_rate_limited toevoegen binnen de RateLimiter-klasse die controleert hoeveel verzoeken er zijn gedaan binnen het tijdsvenster van 1 minuut.
De klassen datetime en timedelta uit de datetime-bibliotheek zijn al vooraf geïmporteerd.
Deze oefening maakt deel uit van de cursus
AI in productie brengen met FastAPI
Oefeninstructies
- Haal de huidige tijd op en bereken de timestamp van één minuut geleden.
- Filter de verzoekenlijst zodat alleen timestamps van de laatste minuut overblijven.
- Controleer of het aantal recente verzoeken de limiet overschrijdt.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
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