Linguaggio Francoforte, Germania

Fai il deploy di Python su Nodion

Nodion esegue la build di ogni repository con un requirements.txt, un Pipfile o un pyproject.toml usando il suo buildpack Python. Installa le tue dipendenze, avvia Django, FastAPI e Flask con un server di produzione ed esegue tutto il resto da app.py, main.py o dal tuo Procfile. L'app gira a Francoforte.

Fai il deploy su Nodion ›

da 1 EUR / mese

Fino a 15 € di credito di benvenuto alla registrazione

Riconosciuto da
requirements.txt, Pipfile o pyproject.toml
Avvio
Predefinito per Django, FastAPI o Flask, altrimenti app.py / main.py o Procfile
Python
da 3.10 a 3.15, predefinita 3.13
Regione
EU Central (Francoforte)

Deploy di Python passo dopo passo

  1. Fai il commit di un solo file delle dipendenze Nodion sceglie l'installer in base al primo file che trova: poetry.lock (Poetry), Pipfile.lock (Pipenv), requirements.txt (pip), poi un pyproject.toml da solo, installato con pip install . (o con Poetry se ha una sezione [tool.poetry]). Un uv.lock viene ignorato e un Pipfile senza il suo lock file non installa nulla.
  2. Fissa la versione di Python Nodion legge .python-version, poi runtime.txt, poi requires-python in pyproject.toml; se non trova nessuna di queste indicazioni, usa la 3.13. Un intervallo come requires-python = ">=3.10" seleziona la release più recente pubblicata, al momento la 3.15, quindi fissa la versione con cui fai i test. .python-version
    3.13
  3. Conosci il comando di avvio predefinito Nodion controlla le tue dipendenze in quest'ordine: Django (con manage.py) parte con Gunicorn, FastAPI o Starlette con Uvicorn, Flask con Gunicorn. Nodion non installa il server, quindi aggiungilo alle dipendenze. Senza un framework, Nodion esegue python app.py o python main.py, e quello script deve restare in ascolto su 0.0.0.0 e sulla porta PORT impostata da Nodion.
  4. Avvia tutto il resto con un Procfile Una riga web: sostituisce il comando predefinito. Senza Django, FastAPI, Flask, app.py o main.py, il Procfile deve definire un processo, web: o worker:; altrimenti la build si ferma con un errore che indica cosa manca. Una riga release: viene eseguita una volta per ogni build, prima che parta la nuova versione: è il posto giusto per le migrazioni. Procfile
    web: gunicorn myapp.wsgi --bind 0.0.0.0:$PORT
    release: alembic upgrade head
  5. Crea l'app e fai push Crea un'applicazione dal tuo repository GitHub, GitLab, Bitbucket o Gitea nella regione EU Central. Le variabili lette dalla build devono avere l'opzione Build nella scheda Environment; tutte le altre, e i database collegati come DATABASE_URL, esistono solo a runtime. Da quel momento ogni push crea una nuova release.

Da sapere

  • Worker e altri tipi di processoUna riga worker: da sola non avvia nulla: nella scheda Processes aggiungi un processo con lo stesso nome e senza porta. Tieni accanto una riga web: esplicita, perché senza di essa la prima voce del Procfile diversa da release: diventa il comando predefinito. Un'app fatta solo di worker, come un bot, imposta invece web a 0 istanze.
  • Il rilevamento legge anche i lock fileNodion cerca Django, FastAPI e Flask in requirements.txt, Pipfile, pyproject.toml, poetry.lock e Pipfile.lock. I lock file elencano anche le dipendenze indirette, quindi una libreria che si porta dietro FastAPI, come Gradio, può attivare il comando predefinito di FastAPI. Una riga web: risolve la questione.
  • Progetti uvIl lock file di uv non viene letto. Esporta le versioni bloccate in un requirements.txt, per esempio con uv export --no-emit-project -o requirements.txt, e fanne il commit; altrimenti Nodion installa da pyproject.toml senza lock.

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

Python su Nodion: domande e risposte

Quali versioni di Python supporta Nodion?

Dalla 3.10 alla 3.15, con la 3.13 come predefinita. Fissane una in .python-version e ottieni la patch più recente di quella versione. Le versioni giunte a fine vita (end of life) fanno fallire la build con un messaggio chiaro.

E se il mio repository non ha né app.py né main.py?

In quel caso, senza Django, FastAPI o Flask, è il tuo Procfile a dire cosa viene eseguito: una riga web: per un server o una riga worker: per un processo in background. Se manca, la build fallisce con un errore che ti dice cosa aggiungere.

Posso fare il deploy di uno script Python che non è un'app web?

Sì. Inseriscilo in un Procfile come worker: python job.py, aggiungi nella scheda Processes un processo chiamato worker senza porta e imposta web a 0 istanze. Per gli script da eseguire a orari pianificati, usa invece la scheda Cron.

Dove gira la mia app Python?

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 Python 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 Python su Nodion?

Un'istanza dell'app costa da 1 EUR al mese. La configurazione mostrata nel riquadro costa 2 EUR al mese: App 2 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 Python?

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.