Web Server Gateway Interface

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 8. März 2016 um 21:28 Uhr durch MichaelSchoenitzer (Diskussion | Beiträge) (Der Artikel erwähnte bisher nicht um welche Programmiersprache es sich überhaupt handelt). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Zur Navigation springen Zur Suche springen

Das Python Web Server Gateway Interface (WSGI) ist eine Schnittstellen-Spezifikation für die Programmiersprache Python, die eine Schnittstelle zwischen Webservern und Web Application Frameworks bzw. Web Application Servern festlegt, um die Portabilität von Webanwendungen auf unterschiedlichen Webservern zu fördern.

Die eigentliche Schnittstelle besteht auf Anwendungsseite aus einem aufrufbaren Objekt, die ein iterierbares Objekt zurückgeben muss und als Parameter die Umgebungsvariablen und ein Funktionsobjekt (start_response im Beispiel) erhält. Die Umgebungsvariablen werden als assoziatives Array übergeben (environ im Beispiel). Das Funktionsobjekt dient dazu, die HTTP-Header auszugeben; es wird von der Server-Seite aufgerufen, bevor der Rückgabewert der Funktion an den Client gesendet wird.

Beispiel:

def app(environ, start_response):
    start_response('200 OK', [('content-type', 'text/plain')])
    return [b'Hello world!']

Hintergrund

In den letzten Jahren entwickelte sich auf der Basis von Python eine Vielzahl von Web Application Frameworks und Web Application Servern. Die Schwierigkeit bestand darin, dass die Auswahl eines Frameworks die Auswahl des Webservers einschränkte und umgekehrt. Dies machte es schwer, sich für ein System zu entscheiden und erschwerte zusätzlich die Portabilität, wenn man später ein anderes Framework bzw. einen anderen Webserver verwenden wollte. Um diesem Problem entgegenzuwirken wurde das Python Web Server Gateway Interface geschaffen – gedacht als einheitliche Schnittstelle (Middleware) zwischen den beiden Welten. Dies sollte eine Trennung des Webservers und der dahinterliegenden Anwendung ermöglichen und damit die Portabilität für diese erhöhen.

Anwendung

Bisher sind nur sehr wenige Webseiten für extensive Nutzung von WSGI bekannt geworden.[1][2] Verwendung findet derzeit WSGI vor allem über mod_wsgi in Apache Web Servern oder über uwsgi in Nginx[3] oder Cherokee[4] Servern. Beide Lösungen können als eigenständiger Systemdienst (daemon) vom Webserver getrennt arbeiten und bieten so neben bedingten Sicherheits- und Performance-Vorteilen auch komfortable Möglichkeiten zur Skalierung und unterbrechungsfreien Updates.[5][6]

WSGI-kompatible Software

Weblinks

Einzelnachweise

  1. mod_wsgi Usage Statistics. Abgerufen am 27. September 2013.
  2. w3techs.com
  3. wiki.nginx.org
  4. cherokee-project.com
  5. uwsgi Zerg Mode. Abgerufen am 27. September 2013.
  6. mod_wsgi Daemon Delegation. Abgerufen am 27. September 2013.