Framework Francoforte, Germania

Fai il deploy di Flask su Nodion

Nodion riconosce Flask tra le tue dipendenze, le installa con il suo buildpack Python e avvia Gunicorn con tre worker sul tuo oggetto app. Le migrazioni possono essere eseguite come fase di release prima che ogni nuova versione vada online, e l'app gira a Francoforte, accanto a un database PostgreSQL gestito se ti serve.

Fai il deploy su Nodion ›

da 1 EUR / mese

Fino a 15 € di credito di benvenuto alla registrazione

Riconosciuto da
Flask tra le tue dipendenze
Avvio
gunicorn app:app, 3 worker
Python
da 3.10 a 3.15, predefinita 3.13
Regione
EU Central (Francoforte)

Deploy di Flask passo dopo passo

  1. Aggiungi Gunicorn alle dipendenze Nodion avvia Gunicorn ma non lo installa, quindi elencalo accanto a Flask. Fissa la versione di Python in .python-version, perché un intervallo in pyproject.toml sceglie la release più recente. requirements.txt
    flask
    gunicorn
  2. Tieni l'oggetto app in app.py Nodion prende il primo file tra app.py, application.py e wsgi.py che contiene Flask ed esegue gunicorn <file>:app con 3 worker sulla porta PORT impostata da Nodion. L'oggetto deve chiamarsi app. app.py
    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.get("/")
    def index():
        return "Hello from Frankfurt"
  3. Usi un'app factory? Aggiungi una riga web Con create_app() non esiste un oggetto app a livello di modulo da trovare, quindi indica a Gunicorn in un Procfile di chiamare la factory. La riga sostituisce il comando di avvio predefinito. Procfile
    web: gunicorn "myapp:create_app()" --bind 0.0.0.0:$PORT --workers 3
  4. Esegui le migrazioni a ogni deploy Con Flask-Migrate, una riga release: esegue flask db upgrade una volta per ogni build, dopo la build e prima che parta la nuova versione. Se fallisce, il deploy si ferma e la versione in esecuzione resta online. Procfile
    release: flask --app myapp db upgrade
  5. Crea l'app e il database Crea un'applicazione dal tuo repository nella regione EU Central, poi un database PostgreSQL nella stessa regione e collegalo nella scheda Environment: al deploy successivo arriva come DATABASE_URL. Imposta la tua SECRET_KEY come variabile segreta, leggila con os.environ, poi fai push.

Da sapere

  • DATABASE_URL e SQLAlchemyLa variabile DATABASE_URL di Nodion inizia con postgres://, che SQLAlchemy dalla 1.4 in poi non accetta. Sostituisci lo schema prima di passarla: postgresql:// per psycopg2, postgresql+psycopg:// per psycopg 3.
  • Health checkIl traffico viene spostato non appena / risponde con 2xx o 3xx, quindi un redirect a una pagina di login va bene. Se / restituisce 401 o 404, aggiungi una route come /healthz e impostala come percorso dell'health check nelle impostazioni dell'app.
  • Worker Celery e RQAggiungi al Procfile worker: celery -A myapp worker insieme a una riga esplicita web: gunicorn app:app --bind 0.0.0.0:$PORT --workers 3; senza una riga web:, la prima voce del Procfile diversa da release: diventa il comando predefinito. Poi, nella scheda Processes, aggiungi un processo chiamato worker senza porta. Valkey nella stessa regione ti fornisce REDIS_URL.

Cosa gestisce Nodion per te

  • Deploy senza downtime Fai push sul tuo branch e Nodion crea una nuova release. Il traffico passa alle nuove istanze solo quando superano l'health check; una release fallita lascia attiva quella in esecuzione. Le app con un volume locale invece si riavviano, perché il disco appartiene a una sola istanza.
  • Database accanto all'app PostgreSQL, pgvector, MySQL, Valkey e ClickHouse gestiti, nella stessa regione. I database collegati arrivano come DATABASE_URL, REDIS_URL o CLICKHOUSE_URL.
  • Anteprime per ogni pull request Attiva le anteprime: ogni pull request del tuo repository riceve un'app dedicata, con un proprio URL e database nuovi e vuoti, creata automaticamente o manualmente. Le pull request dai fork e quelle dei bot vengono ignorate.
  • Worker, cron job e scalabilità Esegui i worker come processi aggiuntivi della stessa app, pianifica i job nella scheda Cron e scala ogni processo fino a 16 istanze.
  • Fase di release Con i buildpack, la riga release: del Procfile viene eseguita a ogni nuova build. Le app con Dockerfile, così come i redeploy e i rollback a un'immagine precedente, usano un comando di release impostato sull'app stessa, che ha anche la precedenza sulla riga del Procfile. Nei siti statici, la fase di release gira in un'immagine che contiene solo i file generati dalla build.
  • Log e metriche Nella dashboard trovi log di build, release e runtime, oltre alle metriche di CPU, memoria, disco e rete per ogni istanza.
  • Domini e HTTPS Un hostname predefinito con HTTPS dal primo deploy; i tuoi domini ricevono i certificati in automatico.

Per approfondire

Flask su Nodion: domande e risposte

Perché la mia app Flask non si avvia?

Di solito Gunicorn manca tra le dipendenze, l'oggetto non si chiama app oppure l'app viene creata in una factory. Aggiungi gunicorn, rinomina l'oggetto o imposta una riga web: che chiami create_app().

Nodion usa flask run o app.run()?

No. Con Flask tra le dipendenze, Nodion avvia Gunicorn. Il server integrato di Flask è pensato per lo sviluppo, quindi lascia app.run() sotto if __name__ == "__main__": per l'uso in locale.

Quanti worker Gunicorn ottengo?

Tre per impostazione predefinita. Imposta il numero che preferisci con --workers in una riga web: e, quando una sola istanza non basta, avvia più istanze del processo web.

Dove gira la mia app Flask?

Nella regione EU Central a Francoforte, in Germania. La build, il registry, l'app e i suoi database, volumi, bucket, log e metriche restano in quella regione. L'API e il control plane di Nodion sono ospitati in Germania. Nodion GmbH ha sede a Stoccarda.

Posso usare Flask in modo conforme al GDPR?

Nodion offre le basi per farlo: Nodion GmbH ha sede a Stoccarda, in Germania; nella regione di Francoforte l'app, i suoi database e i volumi girano in Germania; puoi sottoscrivere il DPA (accordo sul trattamento dei dati, art. 28 GDPR) in formato elettronico nella dashboard. La conformità del tuo utilizzo dipende anche da come configuri e usi l'app.

Quanto costa l'hosting di Flask su Nodion?

Un'istanza dell'app costa da 1 EUR al mese. La configurazione mostrata nel riquadro costa 3.50 EUR al mese: App 2 EUR, PostgreSQL 1.50 EUR. I prezzi sono IVA esclusa e la fatturazione è al secondo. Puoi scegliere dimensioni più grandi o più istanze quando ti servono.

Posso usare un mio dominio per la mia app Flask?

Sì. Ogni app riceve un hostname predefinito con HTTPS. Aggiungi il tuo dominio nella scheda Domains dell'app; il certificato TLS viene emesso e rinnovato automaticamente.

Dai al tuo agente un cloud tutto suo.

Fino a 15 € di credito quando ti registri.

Continua con GitHub

oppure con l'email

Resta aggiornato.

Novità sul prodotto, niente spam. Puoi annullare l'iscrizione quando vuoi.