Desplegar FastAPI en Lizard
Ejecuta FastAPI en Lizard con Uvicorn escuchando en 0.0.0.0:8000. Incluye tanto FastAPI como Uvicorn en las dependencias de la app. Importar un archivo que declara app = FastAPI() no inicia por sí solo un servidor HTTP.
Proyecto de ejemplo
El ejemplo de FastAPI incluye una app, un Procfile, dependencias fijadas, una licencia MIT y pruebas HTTP. Su CI ejecuta el punto de entrada de Uvicorn en producción sobre Linux. También desplegamos el commit df522c1 desde GitHub y comprobamos estado, OpenAPI, documentación interactiva, eco JSON, entrada no válida y una ruta inexistente mediante HTTPS público el 2026-09-09.
Preparar una app
Este ejemplo usa requirements.txt y un main.py en la raíz de la aplicación:
from fastapi import FastAPI
app = FastAPI()
@app.get("/health")
def health():
return {"status": "ok"}Añade fastapi y uvicorn a tu flujo de dependencias y guarda las versiones resueltas y probadas en requirements.txt. Selecciona tu versión menor de Python en .python-version, por ejemplo 3.13, si tus dependencias la admiten.
Crea un Procfile con un destino de importación explícito:
web: uvicorn main:app --host 0.0.0.0 --port 8000main:app significa el objeto app en main.py. Para src/api.py, usa la ruta de importación que funcione desde la raíz de tu app, como src.api:app. El Procfile explícito evita depender de la detección de patrones de código fuente en estructuras personalizadas.
| Ajuste | Valor |
|---|---|
| Install | pip install -r requirements.txt |
| Start | Comando web: del Procfile |
| Puerto del servicio | 8000 |
| Compilar output | Código fuente de Python y dependencias instaladas |
Probar localmente
Usa un entorno virtual local:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8000En otra terminal:
curl --fail http://localhost:8000/healthDeberías obtener una respuesta correcta que contenga {"status":"ok"}. Mantén el modo reload para desarrollo. La guía del servidor FastAPI explica el servidor ASGI y el destino de importación.
Desplegar
Después de la configuración de CLI, sube desde la raíz de la aplicación:
lizard init --name fastapi-app
lizard add --service api
lizard up --service api --port 8000
lizard logs --build --service api --json
lizard logs --service api --json
lizard ps --jsonExcluye los archivos .venv/, __pycache__/ y .env. Deja sin configurar las anulaciones de build/start del servicio para que lizardpack lea el Procfile. La ruta basada en requirements aquí no necesita un comando de compilación separado.
Solicita /health en la URL HTTPS devuelta y luego prueba una acción real de la API. Una sonda de estado TCP solo confirma que el proceso abre su puerto; tu endpoint de estado puede añadir comprobaciones importantes para la app.
Datos y fallos comunes
Configura las credenciales mediante variables y secretos. Añade Managed Postgres cuando la app necesite una base de datos, y usa una referencia de conexión con alcance del servicio. Los archivos locales del contenedor no son almacenamiento persistente para la aplicación; consulta almacenamiento y recuperación.
Para No module named uvicorn, revisa los requirements instalados. Para un error de importación ASGI, ejecuta localmente el comando exacto del Procfile desde la misma raíz. Si un servicio nunca llega a estar saludable, revisa el puerto 8000 y el host de enlace. Si el proceso se cierra sin registros del servidor, confirma que ejecuta Uvicorn en lugar de solo python main.py.
Consulta versiones probadas y resultados en la nube para las comprobaciones de despliegue del 9 de septiembre de 2026 y sus límites.