Framework Fráncfort, Alemania

Despliega FastAPI en Nodion

Nodion reconoce FastAPI o Starlette entre tus dependencias, las instala con su buildpack de Python y arranca Uvicorn sobre tu main.py o app.py. Las migraciones pueden ejecutarse como paso de release antes de que cada nueva versión entre en producción, y la API se ejecuta en Fráncfort, junto a una base de datos PostgreSQL gestionada si la necesitas.

Desplegar en Nodion ›

desde 1 EUR / mes

Hasta 15 € de crédito de bienvenida al registrarte

Detectado por
FastAPI o Starlette entre tus dependencias
Arranque
uvicorn main:app, un proceso
Python
de 3.10 a 3.15, por defecto 3.13
Región
EU Central (Fráncfort)

Despliega FastAPI paso a paso

  1. Instala FastAPI con Uvicorn Nodion arranca Uvicorn, pero no lo instala. fastapi[standard] lo incluye; con fastapi a secas, añade tú uvicorn. Fija la versión de Python en .python-version, porque un rango elige la versión más reciente. requirements.txt
    fastapi[standard]
  2. Deja la app en main.py o app.py Nodion elige, entre main.py y app.py, el que contenga FastAPI o Starlette y ejecuta uvicorn main:app o uvicorn app:app en 0.0.0.0 y en el PORT que define. Responde a / con un 200: es la ruta por defecto del health check. main.py
    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    def root():
        return {"status": "ok"}
  3. ¿Estructura de paquete? Añade una línea web Si tu app está dentro de un paquete, como app/main.py, no hay ningún archivo en la raíz que encontrar. Indica tú el módulo en un Procfile; la línea sustituye al comando de inicio por defecto. Procfile
    web: uvicorn app.main:app --host 0.0.0.0 --port $PORT
  4. Ejecuta las migraciones en cada despliegue Con Alembic, una línea release: se ejecuta una vez por build, después de la build y antes de que arranque la nueva versión. Si falla, el despliegue se detiene y la versión en ejecución sigue activa. Procfile
    release: alembic upgrade head
  5. Crea la app y la base de datos Crea una aplicación desde tu repositorio en la región EU Central, después una base de datos PostgreSQL en la misma región, y vincúlala en la pestaña Environment: la app recibe DATABASE_URL en el siguiente despliegue. Marca las claves de API como secretas y haz push.

A tener en cuenta

  • TrustedHostMiddlewareEl health check de Nodion llama a cada instancia por su dirección interna, que no está en allowed_hosts, así que el middleware responde con un 400 y la release nunca entra en producción. Añade después una función @app.middleware("http") que devuelva 200 para /healthz (Starlette ejecuta primero el middleware que se añadió el último) y configura /healthz como ruta del health check en los ajustes de la app.
  • Más de un workerPor defecto se ejecuta un solo proceso de Uvicorn. Para tener más, define web: uvicorn main:app --host 0.0.0.0 --port $PORT --workers 2 en un Procfile o ejecuta más instancias del proceso web.
  • DATABASE_URL y SQLAlchemyLa DATABASE_URL de Nodion empieza por postgres://, que SQLAlchemy 1.4 y posteriores no aceptan. Cambia el esquema antes de pasarla, por ejemplo por postgresql+psycopg:// para psycopg 3, que funciona con engines síncronos y asíncronos.

Lo que Nodion gestiona por ti

  • Despliegues sin downtime Haz push a tu rama y Nodion construye una nueva release. El tráfico pasa a las nuevas instancias cuando superan el health check; si una release falla, la que está en marcha sigue activa. En cambio, las apps con un volumen local se reinician porque el disco pertenece a una sola instancia.
  • Bases de datos junto a la app PostgreSQL, pgvector, MySQL, Valkey y ClickHouse gestionados en la misma región. Al vincular una base de datos, sus datos de conexión llegan como DATABASE_URL, REDIS_URL o CLICKHOUSE_URL.
  • Previews por pull request Activa las previews: cada pull request de tu repositorio tendrá su propia app, con URL y bases de datos nuevas y vacías. Puedes crearla automáticamente o a mano. Se omiten las pull requests de forks y bots.
  • Workers, cron jobs y escalado Ejecuta workers como procesos adicionales de la misma app, programa tareas en la pestaña Cron y escala cada proceso hasta 16 instancias.
  • Paso de release Con buildpacks, una línea release: del Procfile se ejecuta con cada nueva build. Las apps con Dockerfile, así como los redeploys o rollbacks a una imagen anterior, usan un comando de release definido en la propia app, que además tiene prioridad sobre la línea del Procfile. En los sitios estáticos, el paso de release se ejecuta en una imagen que solo contiene los archivos generados por la build.
  • Logs y métricas Logs de build, release y runtime, además de métricas de CPU, memoria, disco y red de cada instancia, en el dashboard.
  • Dominios y HTTPS Un nombre de host predeterminado con HTTPS desde el primer despliegue; tus propios dominios reciben certificados automáticamente.

Para seguir leyendo

FastAPI en Nodion: preguntas y respuestas

¿Nodion ejecuta FastAPI con varios workers?

No por defecto: Nodion arranca un solo proceso de Uvicorn. Añade --workers 2 o más a tu propia línea web:, o escala el proceso web a más instancias.

¿Por qué mi despliegue de FastAPI nunca llega a estar listo?

El health check necesita un 2xx o 3xx en /. Una API sin ruta raíz responde con 404, y TrustedHostMiddleware responde con 400 a la dirección interna. Añade una ruta raíz, o configura en los ajustes de la app una ruta como /healthz y respóndela antes de la comprobación del host.

¿Funcionan también las apps Starlette?

Sí. Con Starlette entre tus dependencias se aplica el mismo comando por defecto con Uvicorn, que busca app en main.py o app.py.

¿Dónde se ejecuta mi app de FastAPI?

En la región EU Central, en Fráncfort (Alemania). La build, el registry, la app y sus bases de datos, volúmenes, buckets, logs y métricas permanecen en esa región. La API y el plano de control de Nodion están alojados en Alemania. Nodion GmbH tiene su sede en Stuttgart.

¿Puedo usar FastAPI conforme al RGPD?

Nodion te ofrece las bases para ello: Nodion GmbH tiene su sede en Stuttgart (Alemania); en la región de Fráncfort, la app, sus bases de datos y sus volúmenes se ejecutan en Alemania. Puedes formalizar electrónicamente el DPA (contrato de encargo del tratamiento, art. 28 del RGPD) en el dashboard. Que tu uso cumpla el RGPD también depende de cómo configures y uses la app.

¿Cuánto cuesta ejecutar FastAPI en Nodion?

Una instancia de app cuesta desde 1 EUR al mes. La configuración del recuadro de costes cuesta 3.50 EUR al mes: App 2 EUR, PostgreSQL 1.50 EUR. Los precios no incluyen IVA y la facturación es por segundo. Puedes elegir tamaños mayores o más instancias cuando lo necesites.

¿Puedo usar mi propio dominio para mi app de FastAPI?

Sí. Cada app recibe un nombre de host predeterminado con HTTPS. Añade tu propio dominio en la pestaña Domains de la app; el certificado TLS se emite y se renueva automáticamente.

Dale a tu agente un cloud.

Hasta 15 € de crédito al registrarte.

Continuar con GitHub

o con tu email

Mantente al día.

Novedades del producto, sin spam. Puedes darte de baja cuando quieras.