Sprache Frankfurt, Deutschland

Python auf Nodion deployen

Nodion baut jedes Repository mit requirements.txt, Pipfile oder pyproject.toml mit seinem Python-Buildpack. Es installiert deine Dependencies, startet Django, FastAPI und Flask mit einem Produktionsserver und alles andere über app.py, main.py oder deine Procfile. Die App läuft in Frankfurt.

Auf Nodion deployen ›

ab 1 EUR / Monat

Bis zu 15 € Guthaben beim Registrieren

Erkannt an
requirements.txt, Pipfile oder pyproject.toml
Start
Default für Django, FastAPI oder Flask, sonst app.py / main.py oder Procfile
Python
3.10 bis 3.15, Standard 3.13
Region
EU Central (Frankfurt)

Python Schritt für Schritt deployen

  1. Eine Dependency-Datei committen Nodion wählt den Installer nach der ersten Datei, die es findet: poetry.lock (Poetry), Pipfile.lock (Pipenv), requirements.txt (pip), danach eine einzelne pyproject.toml, installiert mit pip install . (oder mit Poetry, wenn sie einen Abschnitt [tool.poetry] hat). Eine uv.lock wird ignoriert, und eine Pipfile ohne Lock-Datei installiert gar nichts.
  2. Python-Version pinnen Nodion liest .python-version, dann runtime.txt, dann requires-python in der pyproject.toml; ohne diese Angaben bekommst du 3.13. Ein Bereich wie requires-python = ">=3.10" landet beim neuesten veröffentlichten Release, aktuell 3.15. Pinne also die Version, mit der du testest. .python-version
    3.13
  3. Den Standard-Startbefehl kennen Nodion prüft deine Dependencies in dieser Reihenfolge: Django (mit manage.py) startet mit Gunicorn, FastAPI oder Starlette mit Uvicorn, Flask mit Gunicorn. Den Server ergänzt Nodion nicht, er gehört in deine Dependencies. Ohne Framework startet Nodion python app.py oder python main.py, und dieses Skript muss auf 0.0.0.0 und dem PORT lauschen, den Nodion setzt.
  4. Alles andere per Procfile starten Eine web:-Zeile ersetzt den Default. Ohne Django, FastAPI, Flask, app.py oder main.py muss die Procfile einen Prozess festlegen, web: oder worker:; sonst bricht der Build mit einer Fehlermeldung ab, die sagt, was fehlt. Eine release:-Zeile läuft bei jedem Build einmal, bevor die neue Version startet, der richtige Ort für Migrationen. Procfile
    web: gunicorn myapp.wsgi --bind 0.0.0.0:$PORT
    release: alembic upgrade head
  5. App anlegen und pushen Lege eine Application aus deinem GitHub-, GitLab-, Bitbucket- oder Gitea-Repository in der Region EU Central an. Variablen, die dein Build liest, brauchen auf dem Tab Environment das Häkchen Build; alle anderen und angehängte Datenbanken wie DATABASE_URL gibt es nur zur Laufzeit. Danach baut jeder Push ein neues Release.

Gut zu wissen

  • Worker und weitere ProzesstypenEine worker:-Zeile startet allein noch nichts: Leg auf dem Tab Processes einen Prozess mit demselben Namen und ohne Port an. Behalte daneben eine ausdrückliche web:-Zeile, denn ohne sie wird der erste Procfile-Eintrag außer release: zum Standardbefehl. Eine reine Worker-App wie ein Bot setzt stattdessen web auf 0 Instanzen.
  • Die Erkennung liest auch Lock-DateienNodion sucht Django, FastAPI und Flask in requirements.txt, Pipfile, pyproject.toml, poetry.lock und Pipfile.lock. Lock-Dateien führen auch indirekte Dependencies auf; eine Bibliothek, die FastAPI mitbringt, etwa Gradio, kann also den FastAPI-Default auslösen. Eine web:-Zeile schafft Klarheit.
  • uv-ProjekteDie Lock-Datei von uv wird nicht gelesen. Exportiere deine gelockten Versionen in eine requirements.txt, etwa mit uv export --no-emit-project -o requirements.txt, und committe sie; sonst installiert Nodion aus der pyproject.toml ohne Lock.

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

Python auf Nodion: Fragen und Antworten

Welche Python-Versionen unterstützt Nodion?

3.10 bis 3.15, Standard ist 3.13. Pinne eine Version in .python-version, dann bekommst du den neuesten Patch dieser Version. Versionen nach ihrem End-of-Life lassen den Build mit einer klaren Meldung scheitern.

Was, wenn mein Repository kein app.py oder main.py hat?

Dann sagt deine Procfile, was läuft, sofern weder Django noch FastAPI noch Flask erkannt wird: eine web:-Zeile für einen Server oder eine worker:-Zeile für einen Hintergrundprozess. Fehlt sie, scheitert der Build mit einer Fehlermeldung, die sagt, was du ergänzen musst.

Kann ich ein Python-Skript ohne Webserver deployen?

Ja. Trag es als worker: python job.py in eine Procfile ein, leg auf dem Tab Processes einen Prozess worker ohne Port an und setz web auf 0 Instanzen. Für Skripte, die nach Zeitplan laufen, nimmst du stattdessen den Tab Cron.

Wo läuft meine Python-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 Python 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 Python-Hosting auf Nodion?

Eine App-Instanz gibt es ab 1 EUR im Monat. Das Setup im Kostenkasten kostet 2 EUR im Monat: App 2 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 Python-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.