Zacznij terazZacznij za darmo

Implementacja limitera żądań

Tworzysz API do analizy sentymentu, które pozwala użytkownikom analizować teksty pod kątem wydźwięku emocjonalnego. Aby zapobiec nadużyciom, musisz zaimplementować mechanizm ograniczania liczby żądań (rate limiting), który dopuszcza tylko 5 żądań na minutę dla każdego klucza API. Klasa RateLimiter jest już utworzona – twoim zadaniem jest dodanie metody is_rate_limited wewnątrz tej klasy. Metoda ta sprawdza liczbę żądań wykonanych w ciągu ostatniej minuty.

Klasy datetime i timedelta z biblioteki datetime zostały już zaimportowane.

To ćwiczenie jest częścią kursu

Wdrażanie AI na produkcję z FastAPI

Zobacz kurs

Instrukcje do ćwiczenia

  • Pobierz aktualny czas i oblicz znacznik czasu sprzed jednej minuty.
  • Przefiltruj listę żądań, zachowując tylko te ze znacznikami czasu z ostatniej minuty.
  • Sprawdź, czy liczba ostatnich żądań przekracza dozwolony limit.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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
Edytuj i uruchom kod