ubuntuusers.de

waitress

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

waitress 🇬🇧 ist ein WSGI 🇬🇧 Applikationsserver für in Python geschriebene Webapplikationen. Der Server selber ist ebenfalls in Python programmiert und hat keine weiteren Abhängigkeiten außer die Standardinstallation von Python. waitress unterstützt sowohl IPv4 als auch IPv6 bei IP-Adressen. Der Server unterstützt HTTPS nicht direkt, d.h. es kann kein SSL-Zertifikat hinterlegt werden. Allerdings kann waitress hinter einem Reverse Proxy betrieben werden, der HTTPS unterstützt und die HTTPS-Verbindung dann durchreicht.

waitress wird im Rahmen des Pylons Projekts 🇬🇧 entwickelt. Neben Linux läuft waitress auch unter MacOS, anderen unixartigen Betriebssystemen und Windows.

Installation

Paketquellen

waitress ist den den Paketquellen von Ubuntu enthalten und kann über das Paket

  • python3-waitress (ab 24.04 in universe)

Befehl zum Installieren der Pakete:

sudo apt-get install python3-waitress 

Oder mit apturl installieren, Link: apt://python3-waitress

installiert werden[1].

Wer die Dokumentation lokal verfügbar haben möchte, installiert zusätzlich das Paket

  • python-waitress-doc (ab 24.04 in universe)

Befehl zum Installieren der Pakete:

sudo apt-get install python-waitress-doc 

Oder mit apturl installieren, Link: apt://python-waitress-doc

Da die Version in den Paketquellen nicht unbedingt die aktuelle stabile Version von waitress ist, ist eine Installation via pip vorzuziehen.

via pip

Die aktuelle, stabile Version von waitress kann mit Hilfe von pip in einem venv installiert werden[2]:

pip3 install waitress 

Wer waitress unter Ubuntu 23.04 und neuer außerhalb eines venv installieren möchte, muss pip mit der entsprechenden Option aufrufen.

Benutzung

waitress kann sowohl aus einen Python-Skript heraus als auch als alleinstehender Server für eine beliebige WSGI-Applikation genutzt werden. Im folgenden ist die Nutzung des alleinstehenden Servers beschrieben. Die Nutzung aus einem Python-Skript heraus ist in der Dokumentation 🇬🇧 erklärt.

Der allgemeine Befehl zum Starten des Servers lautet[2]:

waitress-serve [OPTIONEN] MODUL:APP-OBJEKT 

wobei MODUL:APP-OBJEKT der Einstiegspunkt der WSGI-Applikation sein muss. MODUL ist in der Regel die Datei, in der das APP-OBJEKT definiert ist. Wie der Name des APP-OBJEKT lautet ist der jeweiligen Dokumentation des verwendeten, WSGI-kompatiblen Python Webframeworks zu entnehmen. Beim Aufruf des Befehls muss man sich in dem Verzeichnis befinden, wo das Modul bzw. die Datei liegt, in der das APP-OBJEKT definiert ist.

Werden keine Optionen angegeben, läuft waitress mit den Rechten des Benutzers, der den Server gestartet hat. Der Server lauscht auf 0.0.0.0, also allen IP-Adressen, unter der der Host-Rechner erreichbar ist, auf Port 8080 und läuft mit vier Threads.

Zum Testen des Server kann die folgende, minimale WSGI-Applikation genutzt werden:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def app(environ, start_response):
    """Beispiel für eine sehr simple WSGI-Applikation"""
    data = b'Hallo Ubuntunutzer!\n'
    status = '200 OK'
    response_headers = [
        ('Content-type', 'text/plain'),
        ('Content-Length', str(len(data)))
    ]
    start_response(status, response_headers)
    return iter([data])

Speichert man die Datei z.B. unter dem Namen minimal.py ab und wechselt in das Verzeichnis, wo die Datei liegt, kann man diese über den Aufruf von

waitress-serve minimal:app 

von waitress ausliefern lassen. In einem Browser, die auf den selben Rechner läuft wie der waitress-Server, ist Anwendung jetzt unter http://localhost:8080 erreichbar.

Beachte: Den waitress-Server startet man mit dem Wrapper-Befehl waitress-serve ohne „r“ am Ende!

Der Server kennt eine Reihe von Optionen:

Optionen von waitress-serve
Option Erklärung
--listen=IP-ADRESSE:PORT Der Server lauscht auf der Adresse IP-ADRESSE und dem Port PORT. Beispiel: listen=127.0.0.1:8000.
--threads=ANZAHL Der Server arbeitet mit ANZAHL Threads eingehende Verbindungen ab. Voreinstellung ist 4.
--channel-timeout=SEKUNDEN Inaktive Verbindungen (=keine Daten gesendet oder Empfangen) werden nach SEKUNDEN serverseitig beendet. Voreinstellung ist 120 Sekunden.

Der Befehl waitress-serve kennt noch eine Reihe weiterer Einstellungen. Diese sind in der Dokumentation 🇬🇧 erklärt.

waitress hinter einem Reverse Proxy

Möchte man den Server mit waitress hinter einem Reverse Proxy betreiben, dann findet man in der Dokumentation 🇬🇧 Hinweise, welche Daten der Reverse Proxy an waitress durchreichen sollte.

intern

  • gunicorn - alternativer WSGI-Server für Python Webapplikationen

extern

Diese Revision wurde am 15. April 2024 18:42 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Server, Programmierung, Python