Comece agoraComece grátis

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 exercicio faz parte do curso

Colocando IA em Produção com FastAPI

Ver curso

Instruções do exercicio

  • 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.

exercicio interativo prático

Tente este exercicio 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 Código