Začněte nyníZačněte zdarma

Implementace rate limiteru

Vytváříš API pro analýzu sentimentu, které uživatelům umožňuje analyzovat texty. Aby nedocházelo ke zneužívání, je potřeba implementovat rate limiting, který povolí pouze 5 požadavků za minutu pro každý API klíč. Třída RateLimiter je už připravena – tvým úkolem je přidat metodu is_rate_limited do třídy RateLimiter. Tato metoda zkontroluje počet požadavků odeslaných v časovém okně 1 minuty.

Třídy datetime a timedelta z knihovny datetime jsou už naimportované.

Toto cvičení je součástí kurzu

Nasazení AI do produkce s FastAPI

Zobrazit kurz

Pokyny k cvičení

  • Získej aktuální čas a vypočítej časové razítko pro okamžik před jednou minutou.
  • Filtruj seznam požadavků tak, aby obsahoval pouze časová razítka z poslední minuty.
  • Zkontroluj, jestli počet nedávných požadavků překračuje stanovený limit.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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
Upravit a spustit kód