Saltar al contenido

FastAPI CLI

El CLI de FastAPI es un programa de línea de comandos que puedes usar para servir tu aplicación FastAPI, gestionar tu proyecto FastAPI, y más.

Cuando instalas FastAPI (por ejemplo, con pip install "fastapi[standard]"), viene con un programa de línea de comandos que puedes ejecutar en la terminal.

Para ejecutar tu aplicación FastAPI en desarrollo, puedes usar el comando fastapi dev:

fast →fastapi dev
FastAPI Starting development server 🚀

Searching for package file structure from directories with
__init__.py files
Importing from /home/user/code/awesomeapp

module 🐍 main.py

code Importing the FastAPI app object from the module with the
following code:

from main import app

app Using import string: main:app

server Server started at http://127.0.0.1:8000
server Documentation at http://127.0.0.1:8000/docs

tip Running in development mode, for production use:
fastapi run

Logs:

INFO Will watch for changes in these directories:
['/home/user/code/awesomeapp']
INFO Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to
quit)
INFO Started reloader process [383138] using WatchFiles
INFO Started server process [383153]
INFO Waiting for application startup.
INFO Application startup complete.

restart ↻

Consejo

Para producción usarías fastapi run en lugar de fastapi dev. 🚀

Internamente, el FastAPI CLI usa Uvicorn, un servidor ASGI de alto rendimiento y listo para producción. 😎

El CLI de fastapi intentará detectar automáticamente la aplicación FastAPI a ejecutar, asumiendo que es un objeto llamado app en un archivo main.py (o un par de otras variantes).

Pero puedes configurar explícitamente la aplicación a usar.

Configurar el entrypoint de la aplicación en pyproject.toml

Puedes configurar dónde se encuentra tu aplicación en un archivo pyproject.toml así:

[tool.fastapi]
entrypoint = "main:app"

Ese entrypoint le indicará al comando fastapi que debe importar la aplicación así:

from main import app

Si tu código estaba estructurado así:

.
├── backend
│   ├── main.py
│   ├── __init__.py

Luego configurarías el entrypoint como:

[tool.fastapi]
entrypoint = "backend.main:app"

lo cual sería equivalente a:

from backend.main import app

fastapi dev con ruta o con la opción --entrypoint del CLI

También puedes pasar la ruta del archivo al comando fastapi dev, y adivinará el objeto de la aplicación FastAPI a usar:

$ fastapi dev main.py

O, también puedes pasar la opción --entrypoint al comando fastapi dev:

$ fastapi dev --entrypoint main:app

Pero tendrías que recordar pasar la ruta\entrypoint correcta cada vez que llames al comando fastapi.

Además, es posible que otras herramientas no puedan encontrarlo, por ejemplo la Extensión de VS Code o FastAPI Cloud, por lo que se recomienda usar el entrypoint en pyproject.toml.

fastapi dev

Ejecutar fastapi dev inicia el modo de desarrollo.

Por defecto, auto-reload está activado, recargando automáticamente el servidor cuando haces cambios en tu código. Esto consume muchos recursos y podría ser menos estable que cuando está desactivado. Solo deberías usarlo para desarrollo. También escucha en la dirección IP 127.0.0.1, que es la IP de tu máquina para comunicarse consigo misma (localhost).

fastapi run

Ejecutar fastapi run inicia FastAPI en modo de producción.

Por defecto, auto-reload está desactivado. También escucha en la dirección IP 0.0.0.0, que significa todas las direcciones IP disponibles, de esta manera será públicamente accesible para cualquiera que pueda comunicarse con la máquina. Así es como normalmente lo ejecutarías en producción, por ejemplo, en un contenedor.

En la mayoría de los casos tendrías (y deberías) un "termination proxy" gestionando HTTPS por ti por encima, esto dependerá de cómo despliegues tu aplicación, tu proveedor podría hacer esto por ti, o podrías necesitar configurarlo tú mismo.

Consejo

Puedes aprender más sobre esto en la documentación de despliegue.