Skip to main content

Einführung

  • Dieser Artikel führt dich durch den Prozess der Verwendung von Gunicorn, einem Python-WSGI-HTTP-Server, um Flask, Django und andere WSGI-Anwendungen in Produktion auszuführen.
  • Bevor wir beginnen, stelle sicher, dass Python und Gunicorn in deiner Umgebung installiert sind. Du kannst Gunicorn mit dem folgenden Befehl installieren:
  • Füge gunicorn auch zu deiner requirements.txt hinzu, damit Square Cloud es zusammen mit deinen anderen Abhängigkeiten installiert:
requirements.txt

Grundlegende Verwendung

Um eine Python-Webanwendung mit Gunicorn auszuführen, benötigst du eine WSGI-Anwendung wie Flask, Django oder ein anderes Framework.
Sobald deine Anwendung bereit ist, musst du den Modulnamen und den Variablennamen kennen, der das WSGI-Anwendungsobjekt enthält.
Wenn du zum Beispiel eine Flask-Anwendung in einer Datei namens app.py hast und die Flask-Instanz app heißt, kannst du sie mit Gunicorn über den folgenden Befehl ausführen:
In diesem Befehl:
  • python -m gunicorn führt Gunicorn als Python-Modul aus.
  • --bind 0.0.0.0:80 weist Gunicorn an, auf allen Netzwerkschnittstellen auf Port 80 zu lauschen.
  • app:app gibt den Modulnamen (app) und den Variablennamen (app) an, der das WSGI-Anwendungsobjekt enthält.
Bei Django verweist du Gunicorn auf das Modul wsgi.py, das Django in deinem Projektpaket anlegt (ersetze myproject durch den Namen deines Projekts):

Auf Square Cloud ausführen

Trage den Befehl in das Feld START deiner Konfigurationsdatei ein, damit Square Cloud deine Anwendung mit Gunicorn startet:
squarecloud.app
Gunicorn muss an 0.0.0.0:80 binden: Square Cloud leitet den Traffic deiner Subdomain an Port 80 deiner Anwendung weiter. Square Cloud setzt außerdem die Umgebungsvariable PORT auf 80, und Gunicorn liest sie: Ohne die Option --bind lauscht es auf 0.0.0.0:$PORT, sobald PORT gesetzt ist.

Zusätzliche Optionen

Gunicorn bietet mehrere Optionen, um sein Verhalten anzupassen. Hier zeigen wir einige Optionen.

Workers

  • --workers <number>
Diese Option legt die Anzahl der Worker-Prozesse zur Verarbeitung von Anfragen fest. Jeder Worker ist ein eigener Prozess mit einer eigenen Kopie deiner Anwendung im Speicher, daher ist auf Square Cloud meist der RAM die Grenze, nicht die CPU. Beginne mit 2 Workern und füge weitere erst hinzu, nachdem du MEMORY erhöht hast. Wenn deine Anwendung mit LACK_OF_RAM stoppt, verringere die Anzahl der Worker.
Bemiss die Worker nicht mit multiprocessing.cpu_count() oder der Formel (2 x $num_cores) + 1: Innerhalb eines Containers kann die Kernanzahl die der Host-Maschine sein, wodurch Dutzende Worker starten und deinen RAM aufbrauchen.

Name

  • --name <name>
  • -n <name>
Diese Option legt den Prozessnamen für Gunicorn fest.

Worker-class

  • --worker-class <class>
  • -k <class>
Diese Option legt den zu verwendenden Worker-Typ fest. Der Standard ist sync, aber du kannst auch gevent, eventlet, tornado oder einen anderen Worker-Typ verwenden.

Extras

Gunicorn verfügt über viele weitere Optionen und Funktionen, die du in der offiziellen Dokumentation erkunden kannst.

Konfigurationsdatei

  • Du kannst Gunicorn-Optionen auch in einer Python-Konfigurationsdatei festlegen. Gunicorn lädt automatisch eine Datei namens gunicorn.conf.py aus dem Verzeichnis, in dem es läuft, auf Square Cloud also aus dem Stammverzeichnis deines Projekts. Jeden anderen Dateinamen übergibst du mit -c <file>.
gunicorn.conf.py
  • Mit dieser Datei in deinem Projekt kann das Feld START einfach so lauten:
squarecloud.app

Nächste Schritte

Flask

Deploye eine Flask-Anwendung hinter Gunicorn.

Django

Deploye ein Django-Projekt hinter Gunicorn.

App startet nicht

Behebe EADDRINUSE, LACK_OF_RAM und andere Fehler beim Start.

Hat dir dieser Artikel gefallen?

  • Wir haben diesen Inhalt mit großer Sorgfalt erstellt, um dir die bestmögliche Hilfe zu bieten. Wenn dir dieser Artikel in irgendeiner Weise geholfen hat, unterstütze unsere Arbeit! Entwickler haben Square Cloud bereits mit 4,9/5 bei 402 Bewertungen auf Google und Trustpilot bewertet: hinterlasse auch deine! Sie hilft uns zu verstehen, was dir am wichtigsten ist.

Google Reviews

Hinterlasse deine Bewertung bei Google Reviews.

Trustpilot

Hinterlasse deine Bewertung bei Trustpilot.