Módulo: Despliegue
Este módulo forma parte del curso de FastAPI. Incluye 2 lecciones .
Despliegue de aplicaciones FastAPI
Llevar una aplicación FastAPI a producción implica mucho más que ejecutar uvicorn main:app. Un despliegue profesional requiere configurar correctamente el servidor ASGI, gestionar las variables de entorno de forma segura, contenedorizar la aplicación con Docker y asegurarse de que la aplicación escala y se reinicia automáticamente ante fallos.
Del desarrollo a la producción
Durante el desarrollo usamos uvicorn main:app --reload, que monitoriza cambios en el código y reinicia el servidor automáticamente. En producción este modo no es adecuado por razones de rendimiento y estabilidad.
La arquitectura de producción típica de FastAPI combina:
- Uvicorn como servidor ASGI que procesa las peticiones
- Gunicorn como gestor de procesos que lanza múltiples workers de Uvicorn
- Nginx o Traefik como proxy inverso que gestiona TLS/SSL y el balanceo de carga
- Docker para empaquetar la aplicación y sus dependencias de forma reproducible
Configuración con pydantic-settings
La gestión de configuración es un aspecto crítico del despliegue. pydantic-settings permite definir toda la configuración de la aplicación como un modelo Pydantic que carga automáticamente los valores desde variables de entorno o archivos .env:
from pydantic_settings import BaseSettings
class Configuracion(BaseSettings):
database_url: str
secret_key: str
debug: bool = False
class Config:
env_file = ".env"
Este enfoque garantiza que las configuraciones sensibles nunca se incluyen en el código fuente y que la aplicación se comporta de forma consistente en todos los entornos.
Docker y contenedores
Docker es el estándar de facto para empaquetar aplicaciones. Un contenedor FastAPI incluye exactamente las dependencias necesarias y se ejecuta de forma idéntica en cualquier entorno, desde el portátil del desarrollador hasta el servidor de producción en la nube.
La imagen oficial de Python combinada con el patrón multi-stage build permite crear imágenes de producción ligeras y seguras, sin incluir herramientas de desarrollo innecesarias.
Lifespan y eventos del ciclo de vida
FastAPI permite ejecutar código al arranque y apagado de la aplicación mediante el parámetro lifespan. Esto es esencial para inicializar conexiones a bases de datos, cargar modelos de machine learning o liberar recursos correctamente cuando la aplicación se detiene.
from contextlib import asynccontextmanager
@asynccontextmanager
async def lifespan(app: FastAPI):
# Código de arranque
await conectar_base_datos()
yield
# Código de apagado
await desconectar_base_datos()
app = FastAPI(lifespan=lifespan)
Un manejo correcto del ciclo de vida de la aplicación es fundamental para garantizar la fiabilidad y la correcta liberación de recursos en producción.
Otros módulos de este curso
Despliegue
Lecciones de este módulo
Explora todas las lecciones disponibles en Despliegue
Todos los módulos del curso
Navega entre los módulos de FastAPI
Despliegue
Estás aquíExplora más sobre FastAPI
Descubre más recursos de FastAPI
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, FastAPI es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.