9 Python-Webserver, die Sie für Ihr nächstes Projekt ausprobieren sollten

In dieser Liste stellen wir mehrere Python-Webserver vor, mit denen Sie Ihre Python-Anwendungen bereitstellen 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 zusammen mit ihren herausragenden Merkmalen durch. Die meisten von ihnen sind als PyPI-Pakete verfügbar, die Sie installieren und in Ihren Projekten verwenden können.

Lass uns anfangen!

Was ist ein Webserver?

Beim Entwickeln einer Python-Anwendung verwenden Sie den Entwicklungsserver zum Testen Ihrer Anwendung. Sobald die Entwicklung abgeschlossen ist, müssen Sie Ihre App jedoch auf einem Produktionsserver bereitstellen. Neben mehreren Schichten zusätzlicher Funktionalität sollte ein Webserver über die Grundfunktionalität eines HTTP-Servers verfügen.

Der Python-Webserver sollte in der Lage sein, HTTP-Anforderungen (einfache HTTP-Anforderungen wie GET, PUT und POST) von Clients wie Webbrowsern zu verarbeiten und die Antwort zurückzugeben. Diese Antwort kann den HTTP-Statuscode enthalten, der angibt, ob die Anforderung erfolgreich verarbeitet wurde oder nicht. Es kann aus HTML-Webseiten und halbstrukturierten Daten wie JSON, XML und mehr bestehen.

ASGI vs. WSGI: Server-Gateway-Schnittstellen verstehen

Angenommen, Sie haben eine Python-Anwendung in einem Framework Ihrer Wahl entwickelt, z. B. Django oder Flask. Ein herkömmlicher Server ist möglicherweise nicht in der Lage, die an die Python-Anwendung gerichteten Anforderungen zu verstehen und zu verarbeiten. Hier kommen Server-Gateway-Schnittstellen ins Spiel.

Diese Gateway-Schnittstelle kann eine Webserver-Gateway-Schnittstelle (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 umleitet. Die Schnittstelle (WSGI/ASGI) interagiert mit der Python-Anwendung über ein exponiertes Callable.

Das Web Server Gateway Interface (WSGI) verarbeitet Anfragen sequentiell. Wenn mehrere langsame HTTP-Anforderungen vorhanden sind, wirken sich diese auf den Durchsatz aus.

Asynchronous Server Gateway Interface, oder ASGI, ist ein Nachfolger von WSGI und hat die zusätzliche Fähigkeit, Anforderungen asynchron zu verarbeiten.

Angenommen, eine aktuell bediente Anforderung erfordert einen Datenbanklesevorgang (der möglicherweise lange dauern kann) und wartet auf die Antwort. Wenn die erste Anfrage auf eine Antwort wartet, kann ASGI eine zweite eingehende Anfrage bearbeiten.

Dies steht im Gegensatz zu WSGI, wo die erste Anfrage für die zweite Anfrage verarbeitet werden muss. Daher kann die Verwendung von ASGI zu einem erhöhten Durchsatz führen. Mit ASGI können Sie auch asynchrone Python-Funktionen in Ihrer Anwendung verwenden.

Python-Webserver

Listen Sie nun die Webserver auf, die Sie für Ihre Python-Anwendungen verwenden können. Wir haben auch bestimmte Frameworks aufgenommen, die sofort einsatzbereite Unterstützung für produktionsbereite Server bieten. Dies ist keine vollständige Liste, und die folgenden Webserver-Empfehlungen sind nicht in einer bestimmten Reihenfolge.

Uvicorn

Wenn Sie mit der Anwendungsentwicklung mit FastAPI vertraut sind, sind Sie auf Uvicorn gestoßen, eine Webserver-Implementierung. Uvicorn ist eine ASGI-Serverimplementierung für Python.

Führen Sie den folgenden Befehl aus, um Uvicorn und die zugehörigen Abhängigkeiten mit pip zu installieren:

$ pip install uvicorn[standard] 
# includes installation of optional and Cython-based dependencies

Die folgenden sind die herausragenden Merkmale von Uvicorn:

  • ASGI-Implementierung
  • Unterstützung für das Ausführen von Apps aus einer asynchronen Python-Umgebung
  • Das Kommandozeilentool mit umfangreicher Optionsliste
  • Unterstützt das Ausführen von Anwendungen aus Werksfunktionen
  • Stellt Funktionen zur programmgesteuerten Steuerung von Serverinstanzen bereit

Gunicorn

Gunicorn ist ein WSGI-Server für Python-Anwendungen, der für seine fortschrittlichen Prozessverwaltungsfunktionen bekannt ist.

Uvicorn bietet eine Gunicorn-Worker-Klasse, mit der Sie gleichzeitig Leistungs- und Prozessmanagementvorteile erzielen können. Diese Dokumentationsseite enthält Details zur Bereitstellung von Gunicorn.

Wenn Sie Python 3.5 und höher haben, können Sie Gunicorn mit pip installieren:

$ pip install gunicorn

Das Folgende sind die herausragenden Merkmale von Gunicorn:

  • Einfach und schnell
  • Kompatibel mit vielen Web-Frameworks
  • Unterstützung für die Verwendung mit einem HTTP-Proxy-Server
  • Fortschrittliches Prozessmanagement

CherryPy

CherryPy ist ein Python-Webframework – genau wie Django, Flask und FastAPI – aber nicht so beliebt wie diese Frameworks. Mit mehreren stabilen Releases gibt es CherryPy seit über einem Jahrzehnt und hat sich zu einem vollwertigen Framework entwickelt. Es hat auch eine unterstützende Entwickler-Community.

Sie können sich das interessante Zen von CherryPy ansehen, das die Essenz vermittelt, dass CherryPy ein einfaches und minimalistisches, aber leistungsstarkes Framework ist.

CherryPy ist ein Python-Framework und kein Webserver, aber es steht auf unserer Liste, da es nativ einen Server in Produktionsqualität unterstützt – im Gegensatz zu den meisten anderen Frameworks.

Führen Sie Folgendes aus, um CherryPy zu installieren und loszulegen:

$ pip install CherryPy

Die folgenden sind die herausragenden Merkmale von CherryPy:

  • Pythonisches Framework mit objektorientiertem Python; für anfänger gut geeignet
  • Unterstützung für einen produktionsbereiten HTTP-Server, Cheroot
  • Leichter zu erlernen als andere Web-Frameworks wie Django
  • Unterstützung für das Erstellen und Bereitstellen einfacher Web-Apps für Microservices

Seidelbast

Django ist eines der beliebtesten Python-Webframeworks. Wenn Sie Anwendungen mit Django entwickelt haben, haben Sie wahrscheinlich den Daphne-Webserver verwendet. Daphne ist eine der ersten ASGI-Serverimplementierungen, die als Referenz für ASGI-Serverimplementierungen verwendet wird.

Daphne ist als PyPI-Paket verfügbar, das Sie mit pip installieren können.

$ pip install daphne

Hier ist ein ausführliches Tutorial, das Sie durch die Erstellung einer produktionsbereiten Full-Stack-Python-Anwendung führt.

Die folgenden sind die herausragenden Merkmale von Daphne:

  • Weit verbreitet in Produktionsumgebungen
  • Referenz für alle ASGI-Serverimplementierungen
  • Unterstützung für HTTP-, HTTP2- und WebSocket-Protokolle

Python-Trio

Das Trio-Projekt zielt darauf ab, asynchrone I/O-Fähigkeiten in Produktionsqualität bereitzustellen: Unterstützung für parallele I/O und Parallelität. Dieses Projekt hat auch mehrere Web- und HTTP-Python-Bibliotheken.

Sie können die neueste Version von Trio (Juni 2022) von PyPI installieren.

$ pip install trio

Hier ist eine Liste nützlicher Trio-Bibliotheken für die Webprogrammierung mit Python:

  • hypercorn: Hypercorn ist ein ASGI-Server, der HTTP unterstützt
  • muffin: Muffin ist ein ASGI-Webframework für Python
  • startlette: Starlette ist ein leichtes ASGI-Framework
  • trio-websocket: Unterstützung für WebSocket-Server und -Client
  • httpx: HTTP-Client für Python

Verdrehtes Netz

Twisted 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

Die folgenden sind die herausragenden Merkmale von Twisted:

  • Entwicklerfreundliche Funktionen wie Unit-Tests und statische Codeprü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 ist ein nützliches Video, das die asynchronen Programmierfunktionen auf der Clientseite erklärt, um Anfragen an APIs erheblich zu beschleunigen.

Die folgenden sind die herausragenden Merkmale von AIOHTTP:

  • Unterstützung sowohl für die HTTP-Server- als auch für die Client-Funktionalität
  • Unterstützung für die Protokollierung, um das Debuggen zu erleichtern; bietet Protokollierung für einen Client, Server, Web-Sockets und mehr
  • Native Unterstützung zum 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 gab es viele stabile Versionen von Tornado – die neueste 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 Tornado auch mit pip installiert werden:

$ pip install tornado

Die folgenden sind die herausragenden Merkmale von Tornado:

  • Unterstützung für HTTP-Server tornado.tserver und Client
  • Skalierbar und verwendet nicht blockierende Netzwerk-E/A
  • Gut geeignet für Anwendungen, die eine Konnektivität für einen wesentlich längeren Zeitraum erfordern
  • Dienstprogramme für Protokollierung, Komponententests und mehr
  • Nahtlose Integration mit Diensten für die Authentifizierung

Meinheld

Meinheld ist ein WSGI-Server für Python. Es verwendet und baut vorhandene Bibliotheken für die Ereignisbehandlung und HTTP-Anforderungsverarbeitung auf.

Du kannst Meinheld mit pip installieren:

$ pip install meinheld

Einige Features von Meinheld:

  • Verwendet die http-Parser-Bibliothek, um eingehende HTTP-Anforderungen zu verarbeiten
  • Baut auf der Picoev-Bibliothek für die Ereignisbehandlung auf

Fazit

Ich hoffe, Sie fanden diese Liste von Python-Webservern hilfreich. Probieren Sie sie unbedingt in Ihren zukünftigen Projekten aus. Wir haben die wichtigsten Funktionen aufgelistet; Um die Abhängigkeiten und ihre Funktionsweise vollständig zu verstehen, müssen Sie sie in Ihren Anwendungen verwenden. 👩🏽‍💻

Wenn Sie Ihre Python-Kenntnisse verbessern möchten, sollten Sie sich die wdzwdz-Bibliothek mit Python-Tutorials ansehen. Viel Spaß beim Codieren!