Aus einer völlig rückständigen Sicht, Blankman, hier ist meine "Intro-Seite" für die Web Services Gateway-Oberfläche:
ERSTER TEIL: WEB-SERVER
Webserver liefern Antworten. Sie sitzen herum, warten geduldig und dann plötzlich ohne Vorwarnung:
- Ein Client-Prozess sendet eine Anfrage. Der Client-Prozess kann ein Webserver, ein Bot, eine mobile App sein. Es ist einfach "der Kunde"
- Der Webserver empfängt diese Anfrage
- absichtliches murmeln verschiedene dinge passieren (siehe unten)
- Der Webserver sendet etwas an den Client zurück
- Webserver sitzt wieder herum
Webserver (zumindest die besseren) sind sehr gut darin. Sie skalieren die Verarbeitung je nach Bedarf nach oben und unten, sie führen zuverlässig Gespräche mit den schuppigsten Kunden über wirklich grobe Netzwerke und wir müssen uns nie wirklich darum kümmern. Sie dienen einfach weiter.
Das ist mein Punkt: Webserver sind genau das: Server. Sie wissen nichts über Inhalte, nichts über Benutzer, nichts anderes als viel zu warten und zuverlässig zu antworten.
Ihre Wahl des Webservers sollte Ihre Lieferpräferenz widerspiegeln, nicht Ihre Software. Ihr Webserver sollte für die Bereitstellung, nicht für die Verarbeitung oder logische Daten zuständig sein.
ZWEITER TEIL: (PYTHON) SOFTWARE
Software sitzt nicht herum. Software existiert nur zur Ausführungszeit. Software ist nicht besonders entgegenkommend, wenn es um unerwartete Änderungen in ihrer Umgebung geht (Dateien befinden sich nicht dort, wo sie erwartet werden, Parameter werden umbenannt usw.). Obwohl die Optimierung (natürlich) ein zentraler Grundsatz Ihres Designs sein sollte, wird die Software selbst nicht optimiert. Entwickler optimieren. Software wird ausgeführt. Die Software erledigt alle Aufgaben im Abschnitt "Absichtliches Murmeln" oben. Könnte alles sein.
Ihre Wahl oder Ihr Design der Software sollte Ihre Anwendung, Ihre Wahl der Funktionalität und nicht Ihre Wahl des Webservers widerspiegeln.
Hier wird die traditionelle Methode des "Kompilierens in" Sprachen auf Webservern schmerzhaft. Am Ende fügen Sie Code in Ihre Anwendung ein, um mit der physischen Serverumgebung fertig zu werden, oder müssen zumindest eine geeignete Wrapper-Bibliothek auswählen, die zur Laufzeit aufgenommen werden soll, um die Illusion einer Einheitlichkeit zwischen den Webservern zu erzeugen.
WAS IST WSGI?
Was ist WSGI? WSGI ist ein Regelwerk , das in zwei Hälften geschrieben ist. Sie sind so geschrieben, dass sie in jede Umgebung integriert werden können, die die Integration begrüßt.
Der erste Teil, der für die Webserverseite geschrieben wurde, lautet: "OK, wenn Sie mit einer WSGI-Anwendung arbeiten möchten, wird die Software beim Laden folgendermaßen denken. Hier sind die Dinge, die Sie der Anwendung zur Verfügung stellen müssen, und hier ist die Benutzeroberfläche (Layout), die Sie von jeder Anwendung erwarten können. Wenn außerdem etwas schief geht, wird die App wie folgt denken und wie sie sich verhalten kann. "
Der zweite Teil, der für die Python-Anwendungssoftware geschrieben wurde, lautet: "OK, wenn Sie mit einem WSGI-Server arbeiten möchten, wird der Server folgendermaßen denken, wenn er Sie kontaktiert. Hier sind die Dinge, die Sie dem Server zur Verfügung stellen müssen, und Hier ist die Schnittstelle (Layout), die Sie von jedem Server erwarten können. Wenn etwas schief geht, sollten Sie sich außerdem so verhalten und dem Server Folgendes mitteilen. "
Da haben Sie es also - Server werden Server sein und Software wird Software sein, und hier ist eine Möglichkeit, wie sie einfach gut miteinander auskommen können, ohne dass einer die Besonderheiten des anderen berücksichtigen muss. Das ist WSGI.
mod_wsgi hingegen ist ein Plugin für Apache, mit dem es mit WSGI-kompatibler Software kommunizieren kann. Mit anderen Worten, mod_wsgi ist in Apache eine Implementierung der Regeln von Teil 1 des obigen Regelwerks.
Was CGI betrifft ... frag jemand anderen :-)