ComenzarEmpieza gratis

Implementación del limitador de velocidad

Estás creando una API de análisis de sentimientos con la que los usuarios pueden analizar textos para detectar sentimientos. Para evitar abusos, debes implementar una limitación de velocidad que solo permita 5 solicitudes por minuto por clave API. La clase « RateLimiter » ya está creada y debes añadir el método « is_rate_limited » dentro de la clase « RateLimiter », que comprueba el número de solicitudes que se han realizado en el intervalo de tiempo de 1 minuto.

Las clases datetime y timedelta de la biblioteca datetime se han importado previamente.

Este ejercicio forma parte del curso

Implementación de IA en producción con FastAPI

Ver curso

Instrucciones del ejercicio

  • Obtén la hora actual y calcula la marca de tiempo de hace un minuto.
  • Filtra la lista de solicitudes para conservar solo las marcas de tiempo del último minuto.
  • Comprueba si el número de solicitudes recientes supera el límite.

Ejercicio interactivo práctico

Prueba este ejercicio completando el código de muestra.

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 y ejecutar código