Taal Frankfurt, Duitsland

Deploy Python op Nodion

Nodion bouwt elke repository met een requirements.txt, Pipfile of pyproject.toml met het eigen Python-buildpack. Het installeert je dependencies, start Django, FastAPI en Flask met een productieserver en draait al het andere vanuit app.py, main.py of je Procfile. De app draait in Frankfurt.

Op Nodion deployen ›

vanaf 1 EUR / maand

Tot € 15 welkomsttegoed bij registratie

Herkend aan
requirements.txt, Pipfile of pyproject.toml
Start
Standaard voor Django, FastAPI of Flask, anders app.py / main.py of Procfile
Python
3.10 tot en met 3.15, standaard 3.13
Regio
EU Central (Frankfurt)

Python stap voor stap deployen

  1. Commit één dependency-bestand Nodion kiest de installer op basis van het eerste bestand dat het vindt: poetry.lock (Poetry), Pipfile.lock (Pipenv), requirements.txt (pip), en ten slotte een losse pyproject.toml, die Nodion installeert met pip install . (of met Poetry als het bestand een sectie [tool.poetry] heeft). Een uv.lock wordt genegeerd, en een Pipfile zonder lockbestand installeert niets.
  2. Leg de Python-versie vast Nodion leest .python-version, daarna runtime.txt en daarna requires-python in pyproject.toml; ontbreken ze alle drie, dan krijg je 3.13. Een bereik zoals requires-python = ">=3.10" komt uit op de nieuwste gepubliceerde release, momenteel 3.15, dus leg de versie vast waarmee je test. .python-version
    3.13
  3. Controleer het standaardstartcommando Nodion controleert je dependencies in deze volgorde: Django (met manage.py) start met Gunicorn, FastAPI of Starlette met Uvicorn, Flask met Gunicorn. De server wordt niet voor je toegevoegd, dus zet hem in je dependencies. Zonder framework voert Nodion python app.py of python main.py uit, en dat script moet luisteren op 0.0.0.0 en op de PORT die Nodion instelt.
  4. Start al het andere met een Procfile Een web:-regel vervangt het standaardcommando. Zonder Django, FastAPI, Flask, app.py of main.py moet het Procfile een proces definiëren, web: of worker:; anders stopt de build met een foutmelding die zegt wat er ontbreekt. Een release:-regel draait één keer per build voordat de nieuwe versie start: de plek voor migraties. Procfile
    web: gunicorn myapp.wsgi --bind 0.0.0.0:$PORT
    release: alembic upgrade head
  5. Maak de app aan en push Maak een applicatie aan vanuit je GitHub-, GitLab-, Bitbucket- of Gitea-repository in de regio EU Central. Variabelen die je build leest, hebben de vlag Build nodig op het tabblad Environment; alle andere, en gekoppelde databases zoals DATABASE_URL, bestaan alleen tijdens runtime. Daarna bouwt elke push een nieuwe release.

Goed om te weten

  • Workers en andere procestypenEen worker:-regel start op zichzelf niets: voeg op het tabblad Processes een proces met dezelfde naam en zonder poort toe. Houd er een expliciete web:-regel naast, want zonder die regel wordt de eerste Procfile-regel die geen release: is het standaardcommando. Een app met alleen workers, zoals een bot, zet in plaats daarvan web op 0 instanties.
  • De detectie leest ook lockbestandenNodion zoekt naar Django, FastAPI en Flask in requirements.txt, Pipfile, pyproject.toml, poetry.lock en Pipfile.lock. Lockbestanden bevatten ook indirecte dependencies, dus een bibliotheek die FastAPI meebrengt, zoals Gradio, kan het standaardcommando voor FastAPI activeren. Een web:-regel maakt het eenduidig.
  • uv-projectenHet lockbestand van uv wordt niet gelezen. Exporteer je vastgelegde versies naar een requirements.txt, bijvoorbeeld met uv export --no-emit-project -o requirements.txt, en commit dat bestand; anders installeert Nodion vanuit pyproject.toml zonder lock.

Wat Nodion voor je regelt

  • Deploys zonder downtime Push naar je branch en Nodion bouwt een nieuwe release. Het verkeer schakelt over zodra de nieuwe instanties hun health check doorstaan; een mislukte release laat de draaiende versie staan. Apps met een lokaal volume herstarten in plaats daarvan, omdat de schijf bij één instantie hoort.
  • Databases naast de app Managed PostgreSQL, pgvector, MySQL, Valkey en ClickHouse in dezelfde regio. Gekoppelde databases komen binnen als DATABASE_URL, REDIS_URL of CLICKHOUSE_URL.
  • Previews per pull request Zet previews aan en pull requests uit je repository krijgen een eigen app met een eigen URL en nieuwe, lege databases, automatisch of handmatig aangemaakt. Forks en pull requests van bots worden overgeslagen.
  • Workers, cronjobs en schalen Draai workers als extra processen van dezelfde app, plan jobs op het tabblad Cron en schaal elk proces naar maximaal 16 instanties.
  • Releasestap Met buildpacks draait een release:-regel in het Procfile bij elke nieuwe build. Dockerfile-apps, en redeploys of rollbacks naar een eerdere image, gebruiken een releasecommando dat op de app zelf is ingesteld en dat ook voorrang heeft op de Procfile-regel. Bij statische sites draait een releasestap in een image die alleen de gebouwde bestanden bevat.
  • Logs en metrics Build-, release- en runtimelogs plus metrics voor CPU, geheugen, schijf en netwerk van elke instantie in het dashboard.
  • Domeinen en HTTPS Een standaardhostnaam met HTTPS vanaf de eerste deploy; je eigen domeinen krijgen automatisch certificaten.

Verder lezen

Python op Nodion: vragen en antwoorden

Welke Python-versies ondersteunt Nodion?

3.10 tot en met 3.15, met 3.13 als standaard. Leg er een vast in .python-version en je krijgt de nieuwste patchrelease van die versie. Versies die end-of-life zijn, laten de build mislukken met een duidelijke melding.

Wat als mijn repository geen app.py of main.py heeft?

Dan bepaalt je Procfile, als er geen Django, FastAPI of Flask is, wat er draait: een web:-regel voor een server of een worker:-regel voor een achtergrondproces. Zonder zo'n regel mislukt de build met een foutmelding die zegt wat je moet toevoegen.

Kan ik een Python-script deployen dat geen webapp is?

Ja. Zet het in een Procfile als worker: python job.py, voeg op het tabblad Processes een proces met de naam worker zonder poort toe en zet web op 0 instanties. Gebruik voor scripts die volgens een schema draaien in plaats daarvan het tabblad Cron.

Waar draait mijn Python-app?

In de regio EU Central in Frankfurt, Duitsland. Build, registry, de app en de bijbehorende databases, volumes, buckets, logs en metrics blijven in die regio, en de API en het control plane van Nodion worden in Duitsland gehost. Nodion GmbH is gevestigd in Stuttgart.

Kan ik Python gebruiken volgens de AVG (GDPR)?

Nodion biedt hiervoor de basis: Nodion GmbH is gevestigd in Stuttgart (Duitsland). Kies je de regio Frankfurt, dan draaien de app, de databases en de volumes in Duitsland. De verwerkersovereenkomst (DPA, art. 28 AVG) sluit je elektronisch af in het dashboard. Of je configuratie aan de AVG voldoet, hangt ook af van hoe je de app instelt en gebruikt.

Wat kost het om Python op Nodion te draaien?

Een appinstantie kost vanaf 1 EUR per maand. De configuratie in het kostenoverzicht kost 2 EUR per maand: App 2 EUR. Prijzen zijn excl. btw en worden per seconde gefactureerd, en je kiest grotere formaten of meer instanties wanneer je ze nodig hebt.

Kan ik een eigen domein gebruiken voor mijn Python-app?

Ja. Elke app krijgt een standaardhostnaam met HTTPS. Voeg je eigen domein toe op het tabblad Domains van de app; het TLS-certificaat wordt automatisch uitgegeven en vernieuwd.

Geef je agent een cloud.

Ontvang tot € 15 welkomsttegoed bij je registratie.

Doorgaan met GitHub

of met e-mail

Blijf op de hoogte.

Productnieuws, geen spam. Je kunt je altijd weer afmelden.