WSGI (Web Server Gateway Interface)

WSGI (Web Server Gateway Interface) není software, ale standard (specifikace), který definuje, jak spolu komunikuje webový server (např. Apache nebo Nginx) a webová aplikace napsaná v jazyce Python.

Byl vytvořen v roce 2003 (PEP 333), aby se vyřešil problém nekompatibility mezi různými webovými servery a aplikačními frameworky.

Proč WSGI vznikl?

Před existencí WSGI museli tvůrci frameworků (jako Django nebo Flask) psát specifické verze svých nástrojů pro každý webový server zvlášť. Pokud jste chtěli změnit server, museli jste přepsat kus aplikace.

WSGI vytvořilo univerzální rozhraní:

Na straně serveru: Server ví, jak předat požadavek pomocí WSGI.

Na straně aplikace: Aplikace ví, jak požadavek ve formátu WSGI přijmout a odpovědět na něj.

Jak to funguje?

WSGI definuje jednoduchý vzor: aplikace musí být „volatelný objekt“ (callable), který přijímá dva parametry:

1. environ: Slovník obsahující proměnné prostředí (metoda, URL, hlavičky).
2. start_response: Funkce, která odesílá HTTP status a hlavičky.

Architektura Middleware

Jednou z největších výhod WSGI je možnost vkládat tzv. Middleware. To jsou komponenty, které stojí mezi serverem a aplikací a mohou:

Upravovat požadavky (např. přidávat autentizaci).

Měnit odpovědi (např. komprimovat obsah).

Provádět logování nebo vyrovnávat zátěž.

Rozdíl mezi WSGI a ASGI

V moderním IT se stále častěji setkáváme i s nástupcem:

Standard	Charakteristika
WSGI	Synchronní rozhraní. Vhodné pro klasické aplikace (Django, Flask). Jeden požadavek = jedno vlákno.
ASGI	Asynchronní rozhraní. Podporuje WebSockety a dlouhotrvající spojení (FastAPI, Django Channels).

— Související pojmy: uWSGI, Python, HTTP