ПочатиПочніть безкоштовно

Реалізація обмеження швидкості (rate limiter)

Ви створюєте API для аналізу тональності, де користувачі можуть аналізувати тексти на настрій. Щоб запобігти зловживанням, потрібно додати обмеження швидкості: лише 5 запитів на хвилину для кожного ключа API. Клас RateLimiter уже створено, і вам потрібно додати метод is_rate_limited у класі RateLimiter, який перевірятиме кількість запитів, зроблених у межах 1-хвилинного вікна.

Класи datetime та timedelta з бібліотеки datetime уже імпортовано.

Ця вправа є частиною курсу

Розгортання AI у продакшні з FastAPI

Переглянути курс

Інструкції до вправи

  • Отримайте поточний час і обчисліть мітку часу для однієї хвилини тому.
  • Відфільтруйте список запитів, залишивши лише мітки часу за останню хвилину.
  • Перевірте, чи кількість нещодавніх запитів перевищує ліміт.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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
Редагувати та запускати код