Framework Frankfurt, Deutschland

Flask auf Nodion deployen

Nodion erkennt Flask in deinen Dependencies, installiert sie mit dem Python-Buildpack und startet Gunicorn mit drei Workern auf deinem App-Objekt. Migrationen können als Release-Schritt laufen, bevor eine neue Version live geht, und die App läuft in Frankfurt, auf Wunsch neben einer Managed PostgreSQL-Datenbank.

Auf Nodion deployen ›

ab 1 EUR / Monat

Bis zu 15 € Guthaben beim Registrieren

Erkannt an
Flask in den Dependencies
Start
gunicorn app:app, 3 Worker
Python
3.10 bis 3.15, Standard 3.13
Region
EU Central (Frankfurt)

Flask Schritt für Schritt deployen

  1. Gunicorn zu den Dependencies hinzufügen Nodion startet Gunicorn, installiert es aber nicht, es gehört also neben Flask in deine Dependencies. Pinne die Python-Version in .python-version, denn ein Bereich in der pyproject.toml nimmt das neueste Release. requirements.txt
    flask
    gunicorn
  2. Das App-Objekt in app.py anlegen Nodion nimmt die erste Datei aus app.py, application.py und wsgi.py, die Flask enthält, und startet gunicorn <datei>:app mit 3 Workern auf dem PORT, den Nodion setzt. Das Objekt muss app heißen. app.py
    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.get("/")
    def index():
        return "Hello from Frankfurt"
  3. App Factory? Eine web-Zeile ergänzen Mit create_app() gibt es kein app auf Modulebene, also sagst du Gunicorn in einer Procfile, dass es die Factory aufrufen soll. Die Zeile ersetzt den Standard-Startbefehl. Procfile
    web: gunicorn "myapp:create_app()" --bind 0.0.0.0:$PORT --workers 3
  4. Migrationen bei jedem Deploy ausführen Mit Flask-Migrate führt eine release:-Zeile bei jedem Build einmal flask db upgrade aus, nach dem Build und bevor die neue Version startet. Scheitert sie, stoppt der Deploy und die laufende Version bleibt live. Procfile
    release: flask --app myapp db upgrade
  5. App und Datenbank anlegen Lege eine Application aus deinem Repository in der Region EU Central an, dann eine PostgreSQL-Datenbank in derselben Region, und hänge sie auf dem Tab Environment an: Sie kommt beim nächsten Deploy als DATABASE_URL an. Setz deinen SECRET_KEY als Secret, lies ihn mit os.environ, dann pushen.

Gut zu wissen

  • DATABASE_URL und SQLAlchemyDie DATABASE_URL von Nodion beginnt mit postgres://, und das akzeptiert SQLAlchemy ab 1.4 nicht. Tausch das Schema aus, bevor du die URL weitergibst: postgresql:// für psycopg2, postgresql+psycopg:// für psycopg 3.
  • Health CheckDer Traffic wechselt, sobald / mit 2xx oder 3xx antwortet; eine Weiterleitung auf eine Login-Seite reicht also. Liefert / 401 oder 404, leg eine Route wie /healthz an und trag sie in den App-Einstellungen als Health-Check-Pfad ein.
  • Celery- und RQ-WorkerErgänz die Procfile um worker: celery -A myapp worker und eine ausdrückliche Zeile web: gunicorn app:app --bind 0.0.0.0:$PORT --workers 3; ohne web:-Zeile wird der erste Procfile-Eintrag außer release: zum Standardbefehl. Dann legst du auf dem Tab Processes einen Prozess worker ohne Port an. Valkey in derselben Region liefert dir REDIS_URL.

Was Nodion für dich betreibt

  • Deploys ohne Downtime Push auf deinen Branch und Nodion baut ein neues Release. Der Traffic wechselt erst, wenn die neuen Instanzen ihren Health Check bestehen; ein fehlgeschlagenes Release lässt das laufende stehen. Apps mit lokalem Volume starten stattdessen neu, weil die Disk zu einer Instanz gehört.
  • Datenbanken neben der App Managed PostgreSQL, pgvector, MySQL, Valkey und ClickHouse in derselben Region. Angehängte Datenbanken kommen als DATABASE_URL, REDIS_URL oder CLICKHOUSE_URL in die App.
  • Previews pro Pull Request Schalte Previews ein, und Pull Requests aus deinem Repository bekommen eine eigene App mit eigener URL und frischen, leeren Datenbanken, automatisch oder per Hand angelegt. Forks und Bot-Pull-Requests werden übersprungen.
  • Worker, Cron Jobs und Skalierung Worker laufen als weitere Prozesse derselben App, Jobs planst du auf dem Tab Cron, und jeden Prozess skalierst du auf bis zu 16 Instanzen.
  • Release-Schritt Mit Buildpacks läuft eine release:-Zeile in der Procfile bei jedem neuen Build. Dockerfile-Apps sowie Redeploys und Rollbacks auf ein früheres Image nutzen einen Release Command, der an der App selbst gesetzt ist; er hat auch Vorrang vor der Procfile-Zeile. Bei statischen Sites läuft ein Release-Schritt in einem Image, das nur die gebauten Dateien enthält.
  • Logs und Metriken Build-, Release- und Laufzeit-Logs sowie CPU-, Speicher-, Disk- und Netzwerk-Metriken für jede Instanz im Dashboard.
  • Domains und HTTPS Ein Default-Hostname mit HTTPS ab dem ersten Deploy; deine eigenen Domains bekommen automatisch Zertifikate.

Weiterlesen

Flask auf Nodion: Fragen und Antworten

Warum startet meine Flask-App nicht?

Meist fehlt Gunicorn in den Dependencies, das Objekt heißt nicht app, oder die App entsteht in einer Factory. Ergänz gunicorn, benenn das Objekt um oder setz eine web:-Zeile, die create_app() aufruft.

Nutzt Nodion flask run oder app.run()?

Nein. Mit Flask in den Dependencies startet Nodion Gunicorn. Der eingebaute Server von Flask ist für die Entwicklung gedacht; lass app.run() also unter if __name__ == "__main__": für den lokalen Einsatz stehen.

Wie viele Gunicorn-Worker bekomme ich?

Standardmäßig drei. Eine eigene Zahl setzt du mit --workers in einer web:-Zeile, und reicht eine Instanz nicht, startest du weitere Instanzen des Web-Prozesses.

Wo läuft meine Flask-App?

In der Region EU Central in Frankfurt. Build, Registry, die App und ihre Datenbanken, Volumes, Buckets, Logs und Metriken bleiben in dieser Region, API und Control Plane von Nodion werden in Deutschland gehostet. Die Nodion GmbH hat ihren Sitz in Stuttgart.

Kann ich Flask DSGVO-konform betreiben?

Nodion schafft die Voraussetzungen dafür: Die Nodion GmbH hat ihren Sitz in Stuttgart, in der Region Frankfurt laufen App, Datenbanken und Volumes in Deutschland, und den Auftragsverarbeitungsvertrag (AVV) nach Art. 28 DSGVO schließt du im Dashboard elektronisch ab. Ob dein Einsatz DSGVO-konform ist, hängt auch davon ab, wie du die App konfigurierst und nutzt.

Was kostet Flask-Hosting auf Nodion?

Eine App-Instanz gibt es ab 1 EUR im Monat. Das Setup im Kostenkasten kostet 3.50 EUR im Monat: App 2 EUR, PostgreSQL 1.50 EUR. Preise sind netto, Abrechnung pro Sekunde, größere Varianten oder mehr Instanzen wählst du jederzeit.

Kann ich eine eigene Domain für meine Flask-App nutzen?

Ja. Jede App bekommt einen Default-Hostnamen mit HTTPS. Deine eigene Domain nimmst du auf dem Tab Domains dazu, das TLS-Zertifikat wird automatisch ausgestellt und erneuert.

Gibt es Support auf Deutsch?

Ja. Nodion ist ein deutsches Unternehmen mit Sitz in Stuttgart, der Support antwortet auf Deutsch und auf Englisch.

Gib deinem Agenten eine Cloud.

Bis zu 15 € Guthaben beim Registrieren.

Weiter mit GitHub

oder per E-Mail

Bleib auf dem Laufenden.

Produktnews, kein Spam. Jederzeit abbestellen.