Framework Francoforte, Germania

Fai il deploy di FastAPI su Nodion

Nodion riconosce FastAPI o Starlette tra le tue dipendenze, le installa con il suo buildpack Python e avvia Uvicorn sul tuo main.py o app.py. Le migrazioni possono essere eseguite come fase di release prima che ogni nuova versione vada online, e l'API 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
FastAPI o Starlette tra le tue dipendenze
Avvio
uvicorn main:app, un processo
Python
da 3.10 a 3.15, predefinita 3.13
Regione
EU Central (Francoforte)

Deploy di FastAPI passo dopo passo

  1. Installa FastAPI con Uvicorn Nodion avvia Uvicorn ma non lo installa. fastapi[standard] lo include; con il semplice fastapi, aggiungi tu uvicorn. Fissa la versione di Python in .python-version, perché un intervallo seleziona la release più recente. requirements.txt
    fastapi[standard]
  2. Tieni l'app in main.py o app.py Nodion prende quello tra main.py e app.py che contiene FastAPI o Starlette ed esegue uvicorn main:app o uvicorn app:app su 0.0.0.0 e sulla porta PORT impostata da Nodion. Rispondi a / con un 200: è il percorso predefinito dell'health check. main.py
    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    def root():
        return {"status": "ok"}
  3. Struttura a pacchetto? Aggiungi una riga web Se la tua app si trova in un pacchetto come app/main.py, non c'è un file nella root da trovare. Indica tu il modulo in un Procfile; la riga sostituisce il comando di avvio predefinito. Procfile
    web: uvicorn app.main:app --host 0.0.0.0 --port $PORT
  4. Esegui le migrazioni a ogni deploy Con Alembic, una riga release: viene eseguita 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: alembic upgrade head
  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. Contrassegna le chiavi API come segrete, poi fai push.

Da sapere

  • TrustedHostMiddlewareL'health check di Nodion chiama ogni istanza tramite il suo indirizzo interno, che non è in allowed_hosts: il middleware risponde con 400 e la release non va mai online. Aggiungi dopo di esso una funzione @app.middleware("http") che restituisce 200 per /healthz (Starlette esegue per primo il middleware aggiunto per ultimo) e imposta /healthz come percorso dell'health check nelle impostazioni dell'app.
  • Più di un workerL'impostazione predefinita è un singolo processo Uvicorn. Per averne di più, imposta web: uvicorn main:app --host 0.0.0.0 --port $PORT --workers 2 in un Procfile, oppure avvia più istanze del processo web.
  • 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, per esempio con postgresql+psycopg:// per psycopg 3, che funziona sia con engine sincroni sia con quelli asincroni.

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

FastAPI su Nodion: domande e risposte

Nodion esegue FastAPI con più worker?

Non per impostazione predefinita: Nodion avvia un solo processo Uvicorn. Aggiungi --workers 2 o più a una riga web: personalizzata, oppure scala il processo web su più istanze.

Perché il mio deploy FastAPI non è mai pronto?

L'health check richiede un 2xx o 3xx su /. Un'API senza una route sulla root risponde 404 e TrustedHostMiddleware risponde 400 all'indirizzo interno. Aggiungi una route, oppure imposta un percorso come /healthz nelle impostazioni dell'app e rispondi a quel percorso prima del controllo dell'host.

Funzionano anche le app Starlette?

Sì. Con Starlette tra le dipendenze ottieni lo stesso comando predefinito con Uvicorn, che cerca app in main.py o app.py.

Dove gira la mia app FastAPI?

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

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.