Saltar al contenido

Depuración

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

Llamar a uvicorn

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

import uvicorn
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def root():
    a = "a"
    b = "b" + a
    return {"hello world": b}


if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

Sobre __name__ == "__main__"

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

fast →python myapp.py
restart ↻

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

from myapp import app

Más detalles

Digamos que tu archivo se llama myapp.py.

Si lo ejecutas con:

fast →python myapp.py
restart ↻

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

Entonces, la sección:

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

se ejecutará.


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

Entonces, si tienes otro archivo importer.py con:

from myapp import app

# Some more code

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

Entonces, la línea:

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

no se ejecutará.

Nota

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

Ejecuta tu código con tu depurador

Como estás ejecutando el servidor Uvicorn directamente desde tu código, puedes llamar a tu programa 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"
  • Ejecuta el depurador con la opción "Python: Current File (Integrated Terminal)".

Luego iniciará el servidor con tu código de FastAPI, se detendrá en tus breakpoints, 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 a depurar (en este caso, main.py).

Luego iniciará el servidor con tu código de FastAPI, se detendrá en tus breakpoints, etc.

Así es como podría verse: