Endpoints async en Python
Un handler async def corre en el event loop, así que los await no lo bloquean.
import asyncio
from fastapi import FastAPI
from fastapi.testclient import TestClient
app = FastAPI()
async def obtener(nombre: str) -> dict:
await asyncio.sleep(0.01)
return {"name": nombre, "steps": len(nombre) * 10}
@app.get("/summary")
async def resumen():
tours = await asyncio.gather(obtener("basics"), obtener("pythonic"))
return {"tours": tours, "total": sum(t["steps"] for t in tours)}
cliente = TestClient(app)
print(cliente.get("/summary").json())
Cómo funciona
- Usa async cuando el trabajo hace await; un def simple corre en un threadpool.
asyncio.gatherreparte trabajo dentro de una misma petición.- El TestClient maneja los handlers async de la misma forma.
Palabras clave y builtins usados aquí
asyncawaitdefdictforlenprintreturnstrsum
El intento, en números
- Líneas
- 21
- Caracteres a escribir
- 465
- Tokens
- 137
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 75 segundos.
Paso 2 de 3 en Dependencias y async; paso 11 de 19 en Servicios web y acceso a datos.