uWSGI

uWSGI je vysoce výkonný aplikační server a projekt zaměřený na budování plnohodnotného stacku pro síťové aplikace. Ačkoliv je nejznámější jako server pro aplikace v jazyce Python (přes rozhraní WSGI), jedná se o univerzální nástroj podporující mnoho jazyků a protokolů.

Je napsán v čistém jazyce C, což mu zajišťuje minimální režii a extrémní stabilitu.

Klíčové funkce

uWSGI není jen jednoduchý server, ale komplexní nástroj pro správu procesů:

Podpora více jazyků: Kromě Pythonu podporuje také Ruby (Rack), PHP, Perl, Go nebo Lisp.

Protokol uwsgi: Implementuje vlastní binární protokol, který je mnohem rychlejší než standardní HTTP. Často se používá v kombinaci s webovým serverem (např. Nginx).

Správa procesů (Preforking): Dokáže efektivně spravovat pracovní procesy (workery), automaticky je restartovat při selhání nebo škálovat podle zátěže.

Offloading: Schopnost delegovat náročné úlohy (např. odesílání velkých souborů) na speciální vlákna, aby se uvolnili pracovníci pro další požadavky.

Typické zapojení v infrastruktuře

V produkčním prostředí se uWSGI málokdy používá samostatně. Obvykle stojí v řadě za reverzní proxy:

`Uživatel (Browser) ←→ Nginx (Reverzní proxy) ←→ uWSGI ←→ Webová aplikace (např. Django/Flask)`

Nginx se stará o SSL certifikáty a statické soubory.

uWSGI spouští kód aplikace a spravuje její běh.

Srovnání: WSGI vs. uwsgi vs. uWSGI

Často dochází k pletení těchto podobných názvů:

Pojem	Význam
WSGI	Standard (protokol) pro komunikaci mezi Pythonem a webovým serverem.
uwsgi	Rychlý binární protokol pro přenos dat mezi proxy a aplikačním serverem.
uWSGI	Samotný software (server), který oba výše zmíněné pojmy implementuje.

Příklad konfigurace (.ini)

uWSGI se často konfiguruje pomocí souborů INI:

[uwsgi]
module = myapp.wsgi:application
master = true
processes = 4
socket = /tmp/myapp.sock
chmod-socket = 660
vacuum = true
die-on-term = true

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