Flask

Flask

Despliega Flask con gunicorn, Postgres, migraciones y workers de RQ o Celery.

  • Se detecta a partir de requirements.txt o pyproject.toml que listen flask.
  • Web: gunicorn en $PORT con app:app. Si tu app vive en otro lugar, define el comando de inicio con tu module:callable (para un app factory, "myapp:create_app()").
  • Release: ninguno por defecto. Con Flask-Migrate, define flask db upgrade; con Alembic, alembic upgrade head. Se usa una línea release: del Procfile cuando está presente.
  • Base de datos: psycopg → Postgres, con DATABASE_URL inyectada.
  • Workers y cron: se ofrece RQ cuando es una dependencia. Para Celery, agrega worker: celery -A myapp.celery worker a tu Procfile o agrégalo en la pestaña Workers.

Los workers son un segundo proceso de la misma app

Flask no tiene una convención propia de worker, así que Railyard simplemente aplica la regla de 12-factor directamente: declara un segundo proceso en tu Procfile y escala de forma independiente a web.

web: gunicorn app:app --bind 0.0.0.0:$PORT
worker: rq worker --url $REDIS_URL

O agrégalo en la pestaña Workers de la app sin tocar el repositorio, y escala cualquiera de los dos desde la CLI:

railyard scale my-app worker=2

RQ se ofrece automáticamente cuando es una dependencia; Celery no se detecta automáticamente en Flask — no hay una convención única sobre dónde vive la app de Celery — así que declara su comando una vez tú mismo. Consulta Workers y tareas programadas para cron: ya sea un comando programado ahí, o un segundo proceso worker ejecutando celery -A myapp.celery beat.

Configuración y secretos

DATABASE_URL se inyecta en cuanto psycopg/psycopg2 es una dependencia, y REDIS_URL en cuanto lo es un cliente de Redis (redis, rq). Todo lo demás — SECRET_KEY, FLASK_ENV, feature flags — es una variable de entorno normal en Variables, o railyard env:set my-app KEY=VALUE desde la CLI, así la misma imagen corre sin cambios desde staging hasta producción: paridad dev/prod, no una rama en tiempo de build. Apunta a una base de datos o Redis que corra como su propio servicio en el canvas con ${{redis.RAILYARD_PRIVATE_URL}} — resuelto por entorno. Consulta Variables y secretos.

Despliégalo

  • Desde un repositorio: pega la URL de Git, o elígelo del selector una vez que conectes GitHub — Railyard lee requirements.txt/pyproject.toml, completa gunicorn y DATABASE_URL, y despliega con cada push.
  • Desde la CLI: railyard create my-app https://github.com/me/my-app --addons postgres,redis, o railyard git:remote && git push railyard main desde dentro del repositorio.
  • Con un clic: agrega el botón de despliegue a tu README, o publícalo en el catálogo de plantillas para que cualquiera pueda lanzarlo con sus complementos y variables ya completados.