ComeçarComece de graça

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

Ver curso

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
Editar e executar o código