Реалізація обмеження швидкості (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