Web Server Gateway InterfaceWeb Server Gateway Interface definuje jednoduché a univerzální 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ž podporována modulem mod_wsgi webového serveru Apache. MyšlenkaWebové 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[1] (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á specifikaceWSGI má dvě strany: serverovou nebo "gateway", a aplikační nebo frameworkovou. Serverová strana spustí funkci (popř. 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:
Ukázková aplikaceWSGI-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í aplikacePří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.append(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 frameworkyExistuje mnoho webových frameworků podporujících nebo založených na WSGI:
ObalyV současnosti jsou k dispozici WSGI obaly pro FastCGI, CGI, AJP (za použití modulu flup), Apache (použitím mod wsgi nebo mod python) a Microsoft IIS (použitím isapi-wsgi, PyISAPIe nebo ASP brány). ReferenceV tomto článku byl použit překlad textu z článku Web Server Gateway Interface na anglické Wikipedii. Související články
Externí odkazy
|
Portal di Ensiklopedia Dunia