[python] Jak hostujete pythoní weby?

Petr Messner petr.messner na gmail.com
Středa Duben 7 13:41:42 CEST 2010


Ahoj,

aplikace v produkci spouštím přes CherryPy WSGI HTTP server, jako
front-end web server (který požadavky proxuje na příslušné spuštěné
aplikace) používám Lighttpd.

> Jsou vaše aplikace schopné pracovat i s WSGI?

To je snad standard, ne? (Aspoň pro Python 2.x, protože pro Python 3
AFAIK jaksi zatím ještě nebyly ustanoveny všechny detaily.) Zdá se mi,
že WSGI je chápáno trochu špatně. WSGI není alternativa k
FastCGI/CGI/... WSGI je jen slepovací vrstva, která webovou aplikaci
slepí s FastCGI/CGI/... serverem/handlerem. Mod_wsgi má s WSGI
společného akorát to, že poskytuje WSGI interface pro Apache, jinak je
to (v daemon módu) technicky to samé jako FastCGI.

> U frameworků Django a
> Cherrypy to není problém, ale jsou tu i další, se kterými nemám
> zkušenosti. Myslím si, že by to mohl být limitující faktor mého
> hostingu.

Kvůli snadnému vývoji a použití frameworků WSGI vzniklo - aby každý
tvůrce frameworku nebo aplikace nemusel vymýšlet a implementovat
způsob nasazení (CGI/FastCGI/HTTP server), ale jen použije WSGI
interface, a uživatel ať si to nalepí kamkoliv jak chce. Klidně se
takhle dá naštosovat několik webových aplikací na sebe. A ano, ony
všechny ty i ne-mainstreamové frameworky (Werkzeug, web.py,
Pylons/Paste, web2py, WebCore, Pesto, ...) WSGI opravdu používají
(nebo alespoň podporují).


Je možné se WSGI vyhnout použitím třeba mod_pythonu a jeho API. Tím
ale vaše webové aplikace budou závislé na jednom konkrétním modulu
jednoho konkrétního webserveru, což není moc štastné. A právě tyto
situace - nasazení na hostingu - to může zkomplikovat. Nehledě na to,
že třeba při vývoji může být vhodnější používat nějaký odlehčený
webserver. Navíc mod_python má některé neduhy - od bezpečnosti přes
důsledky plynoucí ze samotné architektury Apache až po některé interní
detaily (třeba více pythonových interpretů v jednom procesu, což může
ovlivnit třeba C moduly které s tím nepočítaly a používají funkce
PyGILState_*()). Mod_python prostě není náhrada mod_php, chová se
úplně jinak. Pokud chcete použít mod_python, nejlepší řešení je
vlastně mít instanci Apache jen pro tu danou aplikaci, a to už pak
vůbec nemusím použít Apache a mod_python, ale něco menšího,
vhodnějšího, lépe konfigurovatelného...

ad "Hodně lidí provozuje Pythona přes mod_python, dokonce to je možná
doporučované řešení" - právě naopak, mod_python není zrovna příliš
doporučované řešení, mimo jiné pro důvody, které jsem popsal výše. O
mod_pythonu se jen hodně píše, prostě proto, že Apache a mod_<název
jazyka> si lidé dlouho neumějí od webu odmyslet. Když už Apache, tak
mod_wsgi v daemon módu. Nebo FastCGI. Nebo proxování na "aplikační"
HTTP server :)

Petr Messner


2010/4/6 Adam Strauch <cx na initd.cz>:
> Ahoj,
>
> začal jsem provozovat pythoní hosting a chtěl bych u vás udělat takový
> malý technologický průzkum. Momentálně mi všechny pythoní aplikace jedou
> přes WSGI, je to rychlý, všechny weby mají své systémové uživatele a
> šlape to opravdu dobře. Nicméně si nemyslím, že jiní vývojáři svoje
> aplikace propojují s Apachem přes WSGI, takže se chci zeptat. Jakou
> formu propojení s Apachem či jiným webovým serverem preferujete a jaké s
> tím máte zkušenosti? Spíše jiné *GI nebo mod_python?
>
> Jsou vaše aplikace schopné pracovat i s WSGI? U frameworků Django a
> Cherrypy to není problém, ale jsou tu i další, se kterými nemám
> zkušenosti. Myslím si, že by to mohl být limitující faktor mého
> hostingu.
>
> --
> Adam
>


Další informace o konferenci Python