2010/4/24 Thomix <thomi...@gmail.com>: ... > > Na začátek bych strašně rád poděkoval za nádherné odezvy, které mě > přivádějí na tu dle mého správnou cestu. Moje projekty navštěvuje více > než deset lidí. Celový traffik je 4TB měsičné, beží na VPS (ubuntu a > debian). Zpracovávám databáze o velikosti 100 a více mb. Příjde mě že > PHP je v tomto při velké návštevnosti strašně pomalé. Proto by mě > zajímalo zda není chyba používat python frameworky na velké projekty. > Pokud ne v čem by jste mě doporučili je dělat ? Rád bych si právě > udělal i vlastní administraci a nechtěl bych využívat něco co už je. > Ještě jednou děkuji :)
Čísla, která uvádíš, jsou několikařádově menší než třeba weby Seznam.cz, které jsou implementovány v Pythonu. Nechci (a asi ani nemůžu) popisovat, jaký framework je pro ně použit, ale nebude to výkonově nic lepšího ani horšího než nějaký normálně navržený Pythonový framework. Ať už již existující nebo co si sám člověk může napsat. Na druhou stranu třeba Facebook je celý v PHP. Myslím, že fakt, že Facebook nedávno vydal (opensourcoval) překladač PHP do C++, a vůbec existence různých PHP optimalizátorů a bytecode keší trochu naznačuje jisté výkonové nedostatky PHP, ale ono PHP na tom není až tak špatně. Naopak, pokud vím, je to jeden z nejrychlejších interpreterů. Bohužel v rukávu zrovna nemůžu najít odkaz na nějaký důvěryhodný test. Problém opět není v rychlosti toho či onoho, ale v tom, jak to celé funguje - PHP skript i se všemi includovanými knihovnami se musí načíst, zparsovat a zinicializovat při každém HTTP požadavku. Toto se u dlouhoběžící Pythonové aplikace děje jen při spuštění, obsluha každého jednotlivého HTTP požadavku je pak o tento rozdíl rychlejší. (Pojmem dlouhoběžící myslím, že to nesmíš nakonfigurovat zrovna jako CGI nebo nějak podobně, to pak o popsanou výhodu samozřejmě přicházíš.) Když už máš webovou aplikaci nataženou v paměti a ona tam zůstává (tzn. není smazána na konci prvního požadavku, jako se to obvykle děje v PHP), můžeš s tím dělat psí kusy. Můžeš si třeba přímo v paměti (v nějakém objektu apod.) kešovat data, vygenerované stránky, výsledky z databáze... Pokud použiješ šablonovací engine (jako že asi ano), bývá obvyklé, že obsahuje nějaký loader, který také kešuje načtené šablony. Můžeš si v nějakém poolu uchovávat i samotná databázová spojení (to v PHP jde taky, říká se tomu persistentní spojení, ale někdy to bývá vypnuté). Abych začal odpovídat nějak konkrétně: > Příjde mě že PHP je v tomto při velké návštevnosti strašně pomalé. Viz výše :) Záleží na tom, co konkrétně ty PHP skripty dělají. > Proto by mě zajímalo zda není chyba používat python frameworky na velké > projekty. Myslím, že není. Existují nástroje, jako ab (Apache benchmarking tool) nebo httperf, které ti změří, kolik požadavků za sekundu web zvládne. Nevygenerují takovou zátěž, jakou ti udělají uživatelé, ale pro změření, zda je to či ono dostatečně rychlé, to je dobré. Konečně, všechno stejně může hodně (pozitivně) ovlivnit kešování na proxy/webserveru. > Rád bych si právě udělal i vlastní administraci a nechtěl bych využívat něco > co už je. Dělej jak chceš. Já dělám také :) "Velké" frameworky na to mají fíčury, jako je koncept controllerů, scaffolding, generování formulářů (s validací, načítáním názvů sloupců z databáze a tak). Ale zase to dělají dost obecně a hlavně tak, aby to každý mohl použít. Když to uděláš podle sebe, může to mít pro tebe lepší výsledky. Podle mě je důležité se v tom vyznat, vědět jak to funguje jinde, abys při vynalézání vlastního kola nevynalezl něco hranatého :) Jinak, pokud zrovna otázku "framework ano nebo ne" nemusíš řešit se spolupracovníky na projektu, se zadavatelem nebo s firemními zvyklostmi, je to asi jedno. PM _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python