Implementación de Middlewares en FastAPI para Medir Tiempos de Request

Clase 19 de 23Curso de FastAPI

Resumen

Los middlewares son piezas clave para gestionar tareas comunes antes y después de cada request en FastAPI. Al crear un middleware, modificamos el comportamiento global de nuestras APIs, lo que hace nuestro código más organizado y eficiente.

¿Qué son los middlewares en Python con FastAPI?

Un middleware es una función en Python ejecutada antes y después de cada request recibido por nuestra API. Su función principal es alterar el comportamiento estándar, permitiéndonos acciones como validaciones de datos o mediciones de tiempos.

¿Cómo se crea y registra un middleware personalizado?

Para crear un middleware personalizado en FastAPI, seguimos pasos simples pero precisos. Veamos el proceso específico para medir el tiempo que tarda cada request:

  1. Definición: Abrimos nuestro archivo main.py y creamos una función asíncrona:
async def logRequestTime(request: Request, call_next):
    startTime = time.time()
    response = await call_next(request)
    processTime = time.time() - startTime
    print(f"Request time {request.url} completed in {processTime} seconds")
    return response

Aquí observarás que se toma nota del tiempo previo y posterior al procesamiento del request para medir su duración.

  1. Registro del middleware: Una vez definido el middleware, debemos registrarlo dentro de la instancia FastAPI:
app.middleware("http")(logRequestTime)

Esto aplicará la funcionalidad en todas las peticiones HTTP hacia nuestra API.

¿Qué errores comunes pueden presentarse y cómo solucionarlos?

Al implementar middleware, podríamos enfrentar errores como conflictos de nombres. Un ejemplo discutido es tener una función nombrada time que provoca un error con la biblioteca estándar del mismo nombre. La solución simple y rápida sería renombrar dicha función para evitar conflictos, como cambiarla a getTimeByIsoCode, por ejemplo.

De esta manera, la funcionalidad del middleware queda estable y operativa.

¿Qué retos prácticos puedes realizar para fortalecer tu aprendizaje?

Como siguiente paso práctico para mejorar tus habilidades, puedes realizar lo siguiente:

  • Implementa otro middleware que imprima en la consola todos los headers incluidos en los requests recibidos por los endpoints de tu API.
  • Esto reforzará tu entendimiento sobre la reutilización de middleware y su potencial en FastAPI.

Anímate a continuar y compartir tus logros o dudas en este ejercicio, ¡Será un gusto apoyarte!