Files
docs-fastapi/docs/es/docs/tutorial/debugging.md
T
The Scheduler a42b1ff04e
Issue Manager / issue-manager (push) Has been cancelled
Build Docs / changes (push) Has been cancelled
Build Docs / langs (push) Has been cancelled
Build Docs / build-docs (push) Has been cancelled
Build Docs / docs-all-green (push) Has been cancelled
Conflict detector / main (push) Has been cancelled
Test Redistribute / test-redistribute (fastapi) (push) Has been cancelled
Test Redistribute / test-redistribute (fastapi-slim) (push) Has been cancelled
Test Redistribute / test-redistribute-alls-green (push) Has been cancelled
Test / lint (push) Has been cancelled
Test / test (pydantic-v1, 3.10) (push) Has been cancelled
Test / test (pydantic-v1, 3.11) (push) Has been cancelled
Test / test (pydantic-v1, 3.13) (push) Has been cancelled
Test / test (pydantic-v1, 3.8) (push) Has been cancelled
Test / test (pydantic-v1, 3.9) (push) Has been cancelled
Test / test (pydantic-v2, 3.10) (push) Has been cancelled
Test / test (pydantic-v2, 3.11) (push) Has been cancelled
Test / test (pydantic-v2, 3.12) (push) Has been cancelled
Test / test (pydantic-v2, 3.13) (push) Has been cancelled
Test / test (pydantic-v2, 3.14) (push) Has been cancelled
Test / test (pydantic-v2, 3.8) (push) Has been cancelled
Test / test (pydantic-v2, 3.9) (push) Has been cancelled
Test / coverage-combine (push) Has been cancelled
Test / check (push) Has been cancelled
Label Approved / label-approved (push) Has been cancelled
FastAPI People Contributors / job (push) Has been cancelled
FastAPI People Sponsors / job (push) Has been cancelled
Update Topic Repos / topic-repos (push) Has been cancelled
FastAPI People / job (push) Has been cancelled
Test / test (pydantic-v1, 3.12) (push) Has been cancelled
Sync fastapi docs from b5ca1324 on 2025-12-07
2025-12-07 21:35:20 +00:00

2.5 KiB

Depuración

Puedes conectar el depurador en tu editor, por ejemplo con Visual Studio Code o PyCharm.

Llama a uvicorn

En tu aplicación de FastAPI, importa y ejecuta uvicorn directamente:

{* ../../docs_src/debugging/tutorial001.py hl[1,15] *}

Acerca de __name__ == "__main__"

El objetivo principal de __name__ == "__main__" es tener algo de código que se ejecute cuando tu archivo es llamado con:

$ python myapp.py

pero no es llamado cuando otro archivo lo importa, como en:

from myapp import app

Más detalles

Supongamos que tu archivo se llama myapp.py.

Si lo ejecutas con:

$ python myapp.py

entonces la variable interna __name__ en tu archivo, creada automáticamente por Python, tendrá como valor el string "__main__".

Así que, la sección:

    uvicorn.run(app, host="0.0.0.0", port=8000)

se ejecutará.


Esto no ocurrirá si importas ese módulo (archivo).

Entonces, si tienes otro archivo importer.py con:

from myapp import app

# Algún código adicional

en ese caso, la variable creada automáticamente dentro de myapp.py no tendrá la variable __name__ con un valor de "__main__".

Así que, la línea:

    uvicorn.run(app, host="0.0.0.0", port=8000)

no se ejecutará.

/// info | Información

Para más información, revisa la documentación oficial de Python.

///

Ejecuta tu código con tu depurador

Dado que estás ejecutando el servidor Uvicorn directamente desde tu código, puedes llamar a tu programa de Python (tu aplicación FastAPI) directamente desde el depurador.


Por ejemplo, en Visual Studio Code, puedes:

  • Ir al panel de "Debug".
  • "Add configuration...".
  • Seleccionar "Python".
  • Ejecutar el depurador con la opción "Python: Current File (Integrated Terminal)".

Luego, iniciará el servidor con tu código FastAPI, deteniéndose en tus puntos de interrupción, etc.

Así es como podría verse:


Si usas PyCharm, puedes:

  • Abrir el menú "Run".
  • Seleccionar la opción "Debug...".
  • Luego aparece un menú contextual.
  • Selecciona el archivo para depurar (en este caso, main.py).

Luego, iniciará el servidor con tu código FastAPI, deteniéndose en tus puntos de interrupción, etc.

Así es como podría verse: