Middleware en Python
Un middleware envuelve cada petición: tiempos, encabezados, logging.
import time
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.testclient import TestClient
app = FastAPI()
app.add_middleware(CORSMiddleware, allow_origins=["https://typestar.io"])
@app.middleware("http")
async def medir_tiempo(request: Request, call_next):
inicio = time.perf_counter()
respuesta = await call_next(request)
transcurrido = (time.perf_counter() - inicio) * 1000
respuesta.headers["X-Elapsed-Ms"] = f"{transcurrido:.1f}"
return respuesta
@app.get("/ping")
def ping():
return {"pong": True}
cliente = TestClient(app)
respuesta = cliente.get("/ping")
print(respuesta.json(), "X-Elapsed-Ms" in respuesta.headers)
Cómo funciona
- La función recibe la petición y un call_next.
- Lo que devuelva es la respuesta que el cliente recibe.
- CORS es un middleware que el framework trae incluido.
Palabras clave y builtins usados aquí
asyncawaitdefprintreturn
El intento, en números
- Líneas
- 27
- Caracteres a escribir
- 682
- Tokens
- 159
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 87 segundos.
Paso 3 de 3 en Dependencias y async; paso 12 de 19 en Servicios web y acceso a datos.