ComeçarComece de graça

Implementando o limitador de taxa

Você está criando uma API de análise de sentimento em que usuários podem analisar textos para identificar sentimentos. Para evitar abuso, você precisa implementar um limitador de taxa que permita apenas 5 requisições por minuto por chave de API. A classe RateLimiter já foi criada e você deve adicionar o método is_rate_limited dentro da classe RateLimiter, que verifica o número de requisições feitas dentro da janela de 1 minuto.

As classes datetime e timedelta da biblioteca datetime já foram pré-importadas.

Este exercício faz parte do curso

Colocando IA em Produção com FastAPI

Ver curso

Instruções do exercício

  • Obtenha o horário atual e calcule o carimbo de data/hora de um minuto atrás.
  • Filtre a lista de requisições para manter apenas os carimbos de data/hora do último minuto.
  • Verifique se a quantidade de requisições recentes excede o 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
Editar e executar o código