typestar

Dependencias en Python

Depends inyecta la preparación compartida, y el framework la cachea por petición.

from fastapi import Depends, FastAPI
from fastapi.testclient import TestClient

app = FastAPI()


def obtener_bd():
    bd = {"rows": ["python", "rust"]}
    try:
        yield bd
    finally:
        bd["closed"] = True


def paginacion(limit: int = 10, offset: int = 0):
    return {"limit": min(limit, 50), "offset": offset}


@app.get("/langs")
def langs(bd=Depends(obtener_bd), pagina=Depends(paginacion)):
    filas = bd["rows"][pagina["offset"]:pagina["offset"] + pagina["limit"]]
    return {"rows": filas, "page": pagina}


cliente = TestClient(app)
print(cliente.get("/langs", params={"limit": 1}).json())

app.dependency_overrides[obtener_bd] = lambda: {"rows": ["falso"]}
print(cliente.get("/langs").json()["rows"])

Cómo funciona

  1. Una dependencia es solo un callable con sus propios parámetros.
  2. Puede usar yield, y eso le da una fase de limpieza.
  3. Sobrescribir una es la forma en que las pruebas reemplazan la base de datos.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
29
Caracteres a escribir
687
Tokens
229
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 125 segundos.

Escribe este fragmento

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

← Anterior Siguiente →