Framework Frankfurt, Duitsland

Deploy Flask op Nodion

Nodion herkent Flask in je dependencies, installeert ze met het eigen Python-buildpack en start Gunicorn met drie workers op je app-object. Migraties kunnen draaien als releasestap voordat elke nieuwe versie live gaat, en de app draait in Frankfurt, desgewenst naast een managed PostgreSQL-database.

Op Nodion deployen ›

vanaf 1 EUR / maand

Tot € 15 welkomsttegoed bij registratie

Herkend aan
Flask in je dependencies
Start
gunicorn app:app, 3 workers
Python
3.10 tot en met 3.15, standaard 3.13
Regio
EU Central (Frankfurt)

Flask stap voor stap deployen

  1. Voeg Gunicorn toe aan je dependencies Nodion start Gunicorn, maar installeert het niet, dus zet het naast Flask. Leg de Python-versie vast in .python-version, want een bereik in pyproject.toml kiest de nieuwste release. requirements.txt
    flask
    gunicorn
  2. Zet het app-object in app.py Nodion neemt het eerste bestand uit app.py, application.py en wsgi.py dat Flask bevat en voert gunicorn <file>:app uit met 3 workers op de PORT die Nodion instelt. Het object moet app heten. app.py
    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.get("/")
    def index():
        return "Hello from Frankfurt"
  3. Gebruik je een app factory? Voeg een web-regel toe Met create_app() is er geen app op moduleniveau om te vinden, dus laat Gunicorn in een Procfile de factory aanroepen. De regel vervangt het standaardcommando. Procfile
    web: gunicorn "myapp:create_app()" --bind 0.0.0.0:$PORT --workers 3
  4. Draai migraties bij elke deployment Met Flask-Migrate voert een release:-regel één keer per build flask db upgrade uit, na de build en voordat de nieuwe versie start. Mislukt hij, dan stopt de deployment en blijft de draaiende versie live. Procfile
    release: flask --app myapp db upgrade
  5. Maak de app en de database aan Maak een applicatie aan vanuit je repository in de regio EU Central, daarna een PostgreSQL-database in dezelfde regio, en koppel die op het tabblad Environment: bij de volgende deployment komt die binnen als DATABASE_URL. Stel je SECRET_KEY in als geheime variabele, lees hem met os.environ en push dan.

Goed om te weten

  • DATABASE_URL en SQLAlchemyDe DATABASE_URL van Nodion begint met postgres://, en dat accepteren SQLAlchemy 1.4 en nieuwer niet. Vervang het schema voordat je de URL doorgeeft: postgresql:// voor psycopg2, postgresql+psycopg:// voor psycopg 3.
  • Health checkHet verkeer schakelt over zodra / antwoordt met 2xx of 3xx, dus een redirect naar een loginpagina is prima. Geeft / 401 of 404 terug, voeg dan een route zoals /healthz toe en stel die in de app-instellingen in als pad van de health check.
  • Celery- en RQ-workersVoeg worker: celery -A myapp worker toe aan het Procfile, samen met een expliciete regel web: gunicorn app:app --bind 0.0.0.0:$PORT --workers 3; zonder web:-regel wordt de eerste Procfile-regel die geen release: is het standaardcommando. Voeg daarna op het tabblad Processes een proces met de naam worker zonder poort toe. Valkey in dezelfde regio geeft je REDIS_URL.

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

Flask op Nodion: vragen en antwoorden

Waarom start mijn Flask-app niet?

Meestal ontbreekt Gunicorn in je dependencies, heet het object niet app, of wordt de app in een factory gebouwd. Voeg gunicorn toe, hernoem het object of stel een web:-regel in die create_app() aanroept.

Gebruikt Nodion flask run of app.run()?

Nee. Met Flask in je dependencies start Nodion Gunicorn. De ingebouwde server van Flask is bedoeld voor ontwikkeling, dus laat app.run() onder if __name__ == "__main__": staan voor lokaal gebruik.

Hoeveel Gunicorn-workers krijg ik?

Standaard drie. Stel je eigen aantal in met --workers in een web:-regel, en draai meer instanties van het webproces als één niet genoeg is.

Waar draait mijn Flask-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 Flask 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 Flask op Nodion te draaien?

Een appinstantie kost vanaf 1 EUR per maand. De configuratie in het kostenoverzicht kost 3.50 EUR per maand: App 2 EUR, PostgreSQL 1.50 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 Flask-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.