typestar

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

  1. Usa async cuando el trabajo hace await; un def simple corre en un threadpool.
  2. asyncio.gather reparte trabajo dentro de una misma petición.
  3. El TestClient maneja los handlers async de la misma forma.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Dependencias y async; paso 11 de 19 en Servicios web y acceso a datos.

← Anterior Siguiente →