In diesem Artikel stellen wir Ihnen mehrere Python-Webserver vor, die Sie für die Bereitstellung Ihrer Python-Anwendungen verwenden können.
Wir beginnen damit, die Funktionsweise von Webservern und die Notwendigkeit von Server-Gateway-Schnittstellen zu verstehen. Dann gehen wir die Liste der Python-Webserver mit ihren wichtigsten Eigenschaften durch. Die meisten von ihnen sind als PyPI-Pakete verfügbar, die Sie installieren und in Ihren Projekten verwenden können.
Lassen Sie uns beginnen!
Was ist ein Webserver?
Wenn Sie eine Python-Anwendung entwickeln, verwenden Sie den Entwicklungsserver, um Ihre Anwendung zu testen. Sobald die Entwicklung jedoch abgeschlossen ist, müssen Sie Ihre Anwendung auf einem produktionsreifen Server bereitstellen. Neben mehreren Schichten zusätzlicher Funktionen sollte ein Webserver über die Grundfunktionen eines HTTP-Server verfügen.

Der Python-Webserver sollte in der Lage sein, HTTP-Anfragen (einfache HTTP-Anfragen wie GET, PUT und POST) von Clients, wie z.B. Webbrowsern, zu bearbeiten und die Antwort zurückzugeben. Diese Antwort kann den HTTP-Statuscode enthalten, der angibt, ob die Anfrage erfolgreich bearbeitet wurde oder nicht. Sie können aus HTML-Webseiten und halbstrukturierten Daten wie JSON, XML und mehr bestehen.
ASGI vs. WSGI: Das Verständnis von Server Gateway Interfaces
Nehmen wir an, Sie haben eine Python-Anwendung in einem Framework Ihrer Wahl entwickelt, beispielsweise Django oder Flask. Ein herkömmlicher Server ist möglicherweise nicht in der Lage, die an die Python-Anwendung gerichteten Anfragen zu verstehen und zu verarbeiten. An dieser Stelle kommen Server-Gateway-Schnittstellen ins Spiel.
Diese Gateway-Schnittstelle kann ein Web Server Gateway Interface(WSGI) oder eine asynchrone Server-Gateway-Schnittstelle(ASGI) sein. Der Webserver erhält eine Anfrage von einem Client, die er dann an die Server-Gateway-Schnittstelle weiterleitet. Die Schnittstelle (WSGI/ASGI) interagiert mit der Python-Anwendung über eine exponierte Callable.

Die Webserver-Gateway-Schnittstelle(WSGI) bearbeitet die Anfragen nacheinander. Wenn es mehrere langsame HTTP-Anfragen gibt, beeinträchtigen diese den Durchsatz.
Das Asynchronous Server Gateway Interface ( ASGI ) ist ein Nachfolger von WSGI und verfügt über die zusätzliche Fähigkeit, Anfragen asynchron zu bearbeiten.
Nehmen wir an, eine gerade bearbeitete Anfrage erfordert einen Datenbankzugriff (der unter Umständen lange dauern kann) und wartet auf die Antwort. Während die erste Anfrage auf eine Antwort wartet, kann ASGI eine zweite eingehende Anfrage bearbeiten.
Dies steht im Gegensatz zu WSGI, bei dem die erste Anfrage vor der zweiten Anfrage bearbeitet werden muss. Daher kann die Verwendung von ASGI zu einem höheren Durchsatz führen. Mit ASGI können Sie außerdem asynchrone Python-Funktionen in Ihrer Anwendung nutzen.
Python Webserver
Lassen Sie uns nun die Webserver auflisten, die Sie für Ihre Python-Anwendungen verwenden können. Wir haben auch einige Frameworks aufgeführt, die sofortige Unterstützung für produktionsreife Server bieten. Diese Liste ist nicht erschöpfend, und die nachstehenden Webserver-Empfehlungen sind nicht in einer bestimmten Reihenfolge aufgeführt.
Uvicorn
Wenn Sie mit der Anwendungsentwicklung mit FastAPI vertraut sind, werden Sie Uvicorn, einer Webserver-Implementierung, schon begegnet sein. Uvicorn ist eine ASGI-Server-Implementierung für Python.

Um Uvicorn und die zugehörigen Abhängigkeiten mit pip
zu installieren, führen Sie den folgenden Befehl aus:
$ pip install uvicorn[standard]
# beinhaltet die Installation von optionalen und Cython-basierten Abhängigkeiten
Im Folgenden finden Sie die wichtigsten Funktionen von Uvicorn:
- ASGI-Implementierung
- Unterstützung für die Ausführung von Anwendungen aus einer asynchronen Python-Umgebung
- Das Kommandozeilen-Tool mit einer umfangreichen Liste von Optionen
- Unterstützt die Ausführung von Anwendungen über Factory-Funktionen
- Bietet Funktionen zur programmatischen Steuerung von Serverinstanzen
Gunicorn
Gunicorn ist ein WSGI-Server für Python-Anwendungen, der für seine fortschrittlichen Funktionen zur Prozessverwaltung bekannt ist.

Uvicorn stellt eine Gunicorn-Arbeiterklasse zur Verfügung, mit der Sie die Vorteile von Leistung und Prozessmanagement gleichzeitig nutzen können. Diese Dokumentationsseite enthält Einzelheiten zum Einsatz von Gunicorn.
Wenn Sie Python 3.5 oder höher haben, können Sie Gunicorn mit pip installieren:
$ pip install gunicorn
Im Folgenden finden Sie die wichtigsten Merkmale von Gunicorn:
- Einfach und schnell
- Kompatibel mit vielen Web-Frameworks
- Unterstützung für die Verwendung mit einem HTTP-Proxy-Server
- Erweiterte Prozessverwaltung
CherryPy
CherryPy ist ein Python-Webframework - genau wie Django, Flask und FastAPI - aber nicht so populär wie diese Frameworks. Mit mehreren stabilen Versionen gibt es CherryPy bereits seit über einem Jahrzehnt und hat sich zu einem vollwertigen Framework entwickelt. Es hat auch eine unterstützende Entwicklergemeinschaft.

Sehen Sie sich die interessanten Zen von CherryPy an, der die Essenz von CherryPy als einfaches und minimalistisches, aber dennoch leistungsstarkes Framework vermittelt.
CherryPy ist ein Python-Framework und kein Webserver, aber es steht auf unserer Liste, weil es im Gegensatz zu den meisten anderen Frameworks von Haus aus einen produktionsfähigen Server unterstützt.
Um CherryPy zu installieren und loszulegen, führen Sie aus:
$ pip install CherryPy
Im Folgenden finden Sie die wichtigsten Merkmale von CherryPy:
- Python-Framework, das objektorientiertes Python verwendet; gut geeignet für Anfänger
- Unterstützung für einen produktionsreifen HTTP-Server, Cheroot
- Leichter zu erlernen als andere Web-Frameworks, wie z.B. Django
- Unterstützung für die Erstellung und Bereitstellung einfacher Webanwendungen für Microservices
Daphne
Django ist eines der beliebtesten Python-Web-Frameworks. Wenn Sie Anwendungen mit Django entwickelt haben, werden Sie wahrscheinlich auch den Daphne-Webserver verwendet haben. Daphne ist eine der ersten ASGI-Server-Implementierungen, die als Referenz für ASGI-Server-Implementierungen dient.
Daphne ist als PyPI-Paket verfügbar, das Sie mit pip installieren können.
$ pip install daphne
Hier finden Sie ein ausführliches Tutorial, das Sie durch die Erstellung einer produktionsreifen Python-Anwendung führt.
Im Folgenden finden Sie die wichtigsten Merkmale von Daphne:
- Weit verbreiteter Einsatz in Produktionsumgebungen
- Referenz für alle ASGI-Server-Implementierungen
- Unterstützung für HTTP, HTTP2 und WebSocket-Protokolle
Python-Trio
Das Trio-Projekt zielt darauf ab, produktionsreife asynchrone E/A-Funktionen bereitzustellen: Unterstützung für parallele E/A und Gleichzeitigkeit. Dieses Projekt umfasst auch mehrere Web- und HTTP-Python-Bibliotheken.

Sie können die neueste Version von Trio (Juni 2022) von PyPI installieren.
$ pip install trio
Hier finden Sie eine Liste nützlicher Trio-Bibliotheken für die Webprogrammierung mit Python:
hypercorn
: Hypercorn ist ein ASGI-Server, der HTTP unterstütztmuffin
: Muffin ist ein ASGI-Web-Framework für Pythonstartlette
: Starlette ist ein leichtgewichtiges ASGI-Frameworktrio-websocket: Unterstützung für <a href="https://geekflare.com/de/websocket-servers/">WebSocket Server</a> und Kunde</li><li><code data-no-auto-translation="">httpx
: HTTP-Client für Python
Verdrehtes Netz
Verdreht ist ein Framework für Python-Anwendungen. Dieses ereignisgesteuerte Framework enthält ein Modul für die Webprogrammierung namens twisted.web
.
Sie können Twisted und die zugehörigen Module mit pip installieren:
$ pip install Twisted
Im Folgenden finden Sie die wichtigsten Merkmale von Twisted:
- Entwicklerfreundliche Funktionen wie Unit-Tests und statische Codeüberprüfung
twisted.web
bietet einen WSGI-Server und Unterstützung für HTTP-Clients und -Server
AIOHTTP
AIOHTTP ist eine Python-Bibliothek, die client- und serverseitige Funktionen über die Client- und Server-APIs bereitstellt.
Hier finden Sie ein nützliches Video, in dem die asynchrone Programmierung auf der Client-Seite erklärt wird, mit der sich Anfragen an APIs erheblich beschleunigen lassen.
Im Folgenden finden Sie die wichtigsten Funktionen von AIOHTTP:
- Unterstützung sowohl für die HTTP-Server- als auch für die Client-Funktionalität
- Unterstützung für die Protokollierung zur Erleichterung der Fehlersuche; bietet Protokollierung für Client, Server, Web-Sockets und mehr
- Native Unterstützung für das Testen durch das pytest Plugin zum Testen: pytest-aiohttp, das als PyPI-Paket verfügbar ist
Tornado
Tornado ist ein weiteres Python-Webframework, das asynchrone Netzwerke unterstützt. In den letzten Jahren hat es viele stabile Versionen von Tornado gegeben - die letzte Version 6.2 wurde im Juli 2022 veröffentlicht. Derzeit unterstützt Tornado Python 3.7 und höher.

Wie die meisten Pakete in dieser Liste, kann auch Tornado mit pip
installiert werden:
$ pip install tornado
Im Folgenden finden Sie die wichtigsten Funktionen von Tornado:
- Unterstützung für HTTP-Server
tornado.httpserver
und Kunde - Skalierbar und verwendet nicht-blockierende Netzwerk-E/A
- Gut geeignet für Anwendungen, die über einen wesentlich längeren Zeitraum eine Verbindung benötigen
- Dienstprogramme für Protokollierung, Unit-Tests und mehr
- Nahtlose Integration mit Diensten zur Authentifizierung
Meinheld
Meinheld ist ein WSGI-Server für Python. Er nutzt und baut auf bestehenden Bibliotheken für die Ereignisbehandlung und die Verarbeitung von HTTP-Anfragen auf.
Sie können Meinheld mit pip installieren:
$ pip install meinheld
Einige Funktionen von Meinheld:
- Verwendet die
http-parser
Bibliothek zur Verarbeitung eingehender HTTP-Anfragen - Bauen Sie auf der
picoev-Bibliothek
für die Ereignisbehandlung auf
Fazit
Ich hoffe, Sie fanden diese Auflistung von Python-Webservern hilfreich. Probieren Sie sie unbedingt in Ihren zukünftigen Projekte aus. Wir haben die wichtigsten Funktionen aufgelistet; um die Abhängigkeiten und die Funktionsweise vollständig zu verstehen, müssen Sie sie in Ihren Anwendungen verwenden. 👩🏽💻
Wenn Sie Ihre Python-Kenntnisse vertiefen möchten, sollten Sie sich die Python-Tutorials von Geekflare ansehen. Viel Spaß beim Programmieren!