Implementando limitador de taxa
Você tá criando uma API de análise de sentimentos onde os usuários podem analisar textos pra ver como eles são. Para evitar abusos, você precisa implementar uma limitação de taxa que permita apenas 5
solicitações por minuto por chave API. A classe “ RateLimiter
” já está pronta e você precisa adicionar o método “ is_rate_limited
” dentro da classe “ RateLimiter
”, que verifica quantas solicitações foram feitas em um minuto.
As classes datetime
e timedelta
da biblioteca datetime
já foram importadas.
Este exercício faz parte do curso
Implementando IA na produção com FastAPI
Instruções do exercício
- Pega a hora atual e calcula o timestamp de um minuto atrás.
- Filtrar a lista de solicitações pra manter só os registros com data e hora do último minuto.
- Dá uma olhada se o número de pedidos recentes passou do limite.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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