2014-01-11 7 views
9

Ich bin neu in Python und ich bin nicht in der Lage, die Serverkonzepte in Python zu verstehen.Unterschied zwischen WSGI-Dienstprogrammen und Webservern

Zunächst einmal, was WSGI ist und was sind wsgiref und Werkzeug und wie unterscheiden sie sich von CherryPy WSGI Server, Gunicorn, Tornado (HTTP Server über wsgi.WSGIContainer), Verdreht Web, uwsgi, Kellnerin WSGI-Server.

Wenn ich eine Webanwendung von Grund auf neu entwickeln muss, meine ich von Anfang an, wo soll ich anfangen, meine Firma braucht ein benutzerdefiniertes Framework und die Anwendung basiert auf kritischen Performance Overheads.

Bitte helfen und erklären, wie sie unterschiedlich sind.

P.S Ich bin kein Anfänger zum Programmieren.

+0

wsgi ist eine Schnittstelle zwischen dem Webserver und Python. Jede Anwendung, die WSGI entspricht, kann mit jedem Server ausgeführt werden, der über einen WSGI-Treiber verfügt. Es ermöglicht Ihnen auch, Middleware zwischen den Webserver und die Anwendung, die zum Beispiel Routing, Sitzungsverwaltung, Caching, etc. behandeln könnte – Thayne

Antwort

7

WSGI ist nur ein Set von Regeln, um die Vereinheitlichung und Standardisierung der Kommunikation von Python-Anwendungen mit Webservern zu unterstützen. Es definiert sowohl, wie Anwendungen Antworten senden sollten und wie Server mit Anwendungen kommunizieren und die Umgebung weitergeben sollten, als auch andere Details über die Anforderung. Jede Anwendung, die mit einem Webserver kommunizieren muss, implementiert WSGI, da dies der De-facto-Standard und die empfohlene Methode für Python ist. WSGI kam, um die anderen Implementierungen zu vereinheitlichen (CGI, mod_python, FastCGI).

wsgiref ist eine Referenzimplementierung der WSGI Schnittstelle. Es ist wie ein Blueprint, um Entwicklern zu helfen, WSGI in ihren eigenen Anwendungen zu implementieren.

Die anderen Dinge, die Sie erwähnten, sind alle verschiedenen Anwendungen, die den WSGI-Standard implementieren; mit einigen Ausnahmen:

  1. Twisted ist eine Bibliothek zum Erstellen von Anwendungen, die über ein Netzwerk kommunizieren können. Any Art von Netzwerk und jede Art von Anwendungen. Es ist nicht auf das Web beschränkt.

  2. Tornado ähnelt Twisted insofern, als es auch eine Bibliothek für die Netzwerkkommunikation ist; es ist jedoch für nicht blockierende Anwendungen ausgelegt. Dinge, die eine lange offene Verbindung zum Server erfordern (wie zB eine Anwendung, die Echtzeit-Feeds anzeigt).

  3. CherryPy ist ein sehr minimales Python-Framework zum Erstellen von Webanwendungen. Es implementiert WSGI.

  4. Werkzeug ist eine Bibliothek, die WSGI implementiert. Wenn Sie also eine Anwendung entwickeln, die WSGI sprechen muss, würden Sie werkzeug importieren, da sie alle benötigten Teile von WSGI bereitstellt.

  5. uWSGI ist ein Projekt, das das einfache Hosting mehrerer Webanwendungen ermöglicht. Die Tatsache, dass WSGI im Namen ist, weil WSGI das erste Plugin war, das mit der Anwendung veröffentlicht wurde. Es ist vielleicht die seltsame Ente in dieser Liste, weil es kein Entwicklungsframework ist, sondern eher eine Möglichkeit, mehrere Webanwendungen zu verwalten.

Web-Server, die WSGI implementieren kann für jede Anwendung sprechen, die auch WSGI implementiert.modwsgi ist eine beliebte Implementierung von WSGI für Webserver; Es ist für Apache und Nginx verfügbar und für IIS gibt es die isapi wsgi module.

+1

So Wsgiref ist eine Referenzimplementierung auf WSGI und damit können wir unsere eigenen Frameworks daraus erstellen. bin ich richtig? – ajkumar25

+0

Ja, aber es wäre viel einfacher, ein benutzerfreundlicheres Toolset wie Werkzeug zu verwenden. –

Verwandte Themen