Web Server Gateway Interface

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Web Server Gateway Interface definuje jednoduché a univerzální [url= Server|Apache][API|rozhraní]] (interface) mezi webovým serverem a webovou aplikací nebo frameworkem v programovacím jazyce Python. Poslední verze jazyka Python, 3.0, vydaná v prosinci 2008, je již [url=http://code.google.com/p/modwsgi/wiki/ChangesInVersion0300]podporována[/url] modulem mod_wsgi webového serveru [[Apache[/url]].

Myšlenka

Webové frameworky (frameworky pro psaní webových aplikací) dříve představovaly problém pro nové uživatele Pythonu, protože volba frameworku omezovala volbu použitelných webových serverů a naopak. Webové aplikace v Pythonu byly často tvořeny buď pro CGI, FastCGI, mod python nebo nějaké jiné vlastní API specifického webového serveru.

WSGI (někdy vyslovováno jako 'whiskey' nebo 'wiz-gee') bylo vytvořeno jako nízkoúrovňové (low-level) rozhraní mezi webovými servery a webovými aplikacemi nebo frameworky, jako základ pro vývoj přenositelných webových aplikací. WSGI je založeno na již existujícím standardu CGI (Common Gateway Interface).

Stručná specifikace

WSGI má dvě strany: serverovou nebo "gateway", a aplikační nebo frameworkovou. Serverová strana spustí funkci (popř. +more metodu nebo spustitelný objekt), která byla poskytnuta aplikační stranou. WSGI také poskytuje koncept middleware: WSGI middleware implementuje obě strany API a může tak být vloženo "mezi" WSGI server a WSGI aplikaci; middleware se pak z pohledu serveru jeví jako aplikace a z pohledu aplikace jako server.

Middleware komponenta může vykonávat různé funkce:

* Předat požadavek jinému aplikačnímu objektu na základě cílové URL * Umožňovat běh více aplikací nebo frameworků vedle sebe ve stejném procesu * Vyvažovat zátěž a zprostředkovávat vzdálené zpracování přeposíláním požadavků a odpovědí přes síť * Provádět dodatečné zpracování obsahu, např. aplikování XSLT předpisů

Ukázková aplikace

WSGI-kompatibilní aplikace Hello World v Pythonu:

def app(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) yield 'Hello World\n'

Příklad zavolání aplikace

Příklad zavolání WSGI aplikace a získání její odpovědi:

def call_application(app, environ): body = [] status_headers = [None, None] def start_response(status, headers): status_headers[:] = [status, headers] return body. append app_iter = app(environ, start_response) try: for item in app_iter: body. +moreappend(item) finally: if hasattr(app_iter, 'close'): app_iter. close return status_headers[0], status_headers[1], . join(body).

status, headers, body = call_application(app, {...environ...})

WSGI-kompatibilní aplikace a frameworky

Existuje mnoho webových frameworků podporujících nebo založených na WSGI:

* CherryPy * Django * web2py ([url=http://web2py. com/]web2py. +morecom[/url]. Obsahuje CherryPy wsgiserver s podporou SSL) * TurboGears * Tornado ([url=http://www. tornadoweb. org/]www. tornadoweb. org[/url]) * [url=http://pyamf. org/]PyAMF[/url] * Pylons * web. py ([url=http://webpy. org/]webpy. org[/url]) * bottle. py ([url=https://web. archive. org/web/20100926130542/http://bottle. paws. de/]bottle. paws. de[/url]) * BlueBream * Google App Engine * Werkzeug ([url=http://werkzeug. pocoo. org/]werkzeug. pocoo. org[/url]) * Flask.

Obaly

V současnosti jsou k dispozici WSGI obaly pro [url= Server|Apache][FastCGI]], CGI, AJP (za použití modulu flup), [[Apache[/url]] (použitím mod wsgi nebo mod python) a Microsoft IIS (použitím [url=http://code. google. +morecom/p/isapi-wsgi/]isapi-wsgi[/url], [url=https://web. archive. org/web/20080829231658/http://pyisapie. sourceforge. net/]PyISAPIe[/url] nebo ASP brány).

Reference

Související články

Rack - rozhraní webového serveru v programovacím jazyce Ruby * PSGI - Perl Web Server Gateway Interface

Externí odkazy

[url=http://wsgi. org/]Wiki o WSGI[/url] * [url=https://web. +morearchive. org/web/20060202222753/http://pythonpaste. org/]Paste - WSGI metaframework[/url] * [url=https://web. archive. org/web/20081204012403/http://webpython. codepoint. net/wsgi]WSGI tutorial[/url] * [url=http://docs. python. org/library/wsgiref. html]wsgiref[/url] - standardní modul Pythonu.

Kategorie:World Wide Web Kategorie:Python

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top