Framework Fráncfort, Alemania

Despliega Flask en Nodion

Nodion reconoce Flask entre tus dependencias, las instala con su buildpack de Python y arranca Gunicorn con tres workers sobre tu objeto app. Las migraciones pueden ejecutarse como paso de release antes de que cada nueva versión entre en producción, y la app 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
Flask entre tus dependencias
Arranque
gunicorn app:app, 3 workers
Python
de 3.10 a 3.15, por defecto 3.13
Región
EU Central (Fráncfort)

Despliega Flask paso a paso

  1. Añade Gunicorn a tus dependencias Nodion arranca Gunicorn, pero no lo instala, así que inclúyelo junto a Flask. Fija la versión de Python en .python-version, porque un rango en pyproject.toml elige la versión más reciente. requirements.txt
    flask
    gunicorn
  2. Deja el objeto app en app.py Nodion toma el primero de app.py, application.py y wsgi.py que contenga Flask y ejecuta gunicorn <archivo>:app con 3 workers en el PORT que define. El objeto tiene que llamarse app. app.py
    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.get("/")
    def index():
        return "Hello from Frankfurt"
  3. ¿Usas una app factory? Añade una línea web Con create_app() no hay ningún app a nivel de módulo que encontrar, así que indica a Gunicorn en un Procfile que llame a la factory. La línea sustituye al comando de inicio por defecto. Procfile
    web: gunicorn "myapp:create_app()" --bind 0.0.0.0:$PORT --workers 3
  4. Ejecuta las migraciones en cada despliegue Con Flask-Migrate, una línea release: ejecuta flask db upgrade 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: flask --app myapp db upgrade
  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. Define tu SECRET_KEY como variable secreta, léela con os.environ y haz push.

A tener en cuenta

  • 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: postgresql:// para psycopg2, postgresql+psycopg:// para psycopg 3.
  • Health checkEl tráfico pasa a la nueva versión en cuanto / responde con 2xx o 3xx, así que una redirección a una página de login vale. Si / devuelve 401 o 404, añade una ruta como /healthz y configúrala como ruta del health check en los ajustes de la app.
  • Workers de Celery y RQAñade al Procfile worker: celery -A myapp worker junto con una línea web: gunicorn app:app --bind 0.0.0.0:$PORT --workers 3 explícita; sin una línea web:, la primera entrada del Procfile que no sea release: pasa a ser el comando por defecto. Después, en la pestaña Processes, añade un proceso llamado worker sin puerto. Valkey en la misma región te da REDIS_URL.

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

Flask en Nodion: preguntas y respuestas

¿Por qué no arranca mi app Flask?

Normalmente falta Gunicorn en tus dependencias, el objeto no se llama app o la app se crea mediante una función de fábrica. Añade gunicorn, cambia el nombre del objeto o define una línea web: que llame a create_app().

¿Nodion usa flask run o app.run()?

No. Con Flask entre tus dependencias, Nodion arranca Gunicorn. El servidor integrado de Flask está pensado para desarrollo, así que deja app.run() bajo if __name__ == "__main__": para usarlo en local.

¿Cuántos workers de Gunicorn tengo?

Tres por defecto. Define tu propio número con --workers en una línea web: y ejecuta más instancias del proceso web cuando una no sea suficiente.

¿Dónde se ejecuta mi app de Flask?

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 Flask 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 Flask 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 Flask?

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.