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:
<font color="#4E9A06">fastapi</font> 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.
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í:
frommainimportapp
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:
frombackend.mainimportapp
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:
$ fastapidevmain.py
O, también puedes pasar la opción --entrypoint al comando fastapi dev:
$ fastapidev--entrypointmain: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.
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).
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.