Ahoj, 4TB mesicne je v podstate nezajimavy udaj, to nic nerika o narocnosti jednotlivych aplikaci nebo webu. To muze udelat bittorrent s minimalnimi naroky na pamet a (skoro) nemeritelnou zatezi procesoru.
Zkust uvest zpracovane HTTP pozadavky za sekundu pri beznem provozu a ve spicce, pak se tim da nejak pracovat. Ale obecne se da rict, ze ani v pripade "velkych" cisel ti nikdo nerekne, ze nemas pouzit Python nebo PHP. I na jednoduche VPS se da na beznem webu udelat velka spousta optimalizaci a kesovani, ktere dokazou radove zvysit vykon. Zkus napsat trochu vic o tom, jak ty tve weby vypadaji... Jirka On 24/04/2010, Thomix <thomi...@gmail.com> wrote: > On Apr 24, 5:34 pm, Petr Messner <petr.mess...@gmail.com> wrote: >> Ahoj, >> >> zkusím ti to nejdřív nějak vysvětlit, pak ti odpovím na tvé konkrétní >> otázky a závěr ještě něco přidám. Sorry, vzhledem k formulaci a vlastně >> samotné existenci dotazu jsem se trochu více rozepsal. >> >> Pro jistotu zde uvedu definici WSGI: je to lepidlo, pomocí kterého se >> slepí webový server a webový framework/webová aplikace; je to proto, aby >> každá aplikace/každý framework nemusel znovu a znovu implementovat HTTP, >> FastCGI, CGI atd. Místo toho jen webserver nebo FastCGI server nebo CGI >> handler (nebo cokoliv) jen poskytne WSGI rozhraní a aplikace/framework už >> se tím nemusí zabývat. >> >> Ale stále toho k zabývání se ještě spousta zbývá. WSGI je low-level a >> nedělá nic jiného, než co jsem právě popsal. Mohl bys WSGI vzít a přidat >> do něj nějaké hezčí zpracování uploadu souborů, mohl bys do něj přidat >> spojení do databáze, logování atd., ale to už by pak nebylo hezké >> rozhraní, ale pěkný moloch. Byl by to webový framework. Úkolem WSGI není >> být webovým frameworkem, ale umožnit webovým frameworkům fungovat >> nezávisle na tom, jestli budou spuštěny přes CGI, FastCGI nebo nějak >> jinak. >> >> Takže: >> >> 1. pokud chceš v Pythonu dělat weby, nedělej je čistě ve WSGI, ale najdi >> si knihovnu nebo framework, která bude řešit ty nejotravnější věci (upload >> souborů apod.) Může to být buď full-stack framework jako třeba Django nebo >> Pylons, nebo to může být knihovna, která dělá primárně právě jen tohle, >> např. Werkzeug, Paste WebOb, yaro, ... Je toho mraky. Mezi tím jsou ještě >> další věci, např. CherryPy. A pak ještě speciality, jako Zope nebo >> Twisted. >> >> 2. statistiky na webu bývají pochybné kvality, nejlepší je se o výkonu >> něčeho přesvědčit sám. Na co psát něco ultra-efektivně, když tam stejně >> poleze jen deset lidí denně - místo toho to dělej tak, abys z toho měl sám >> radost a měl s tím co nejméně práce. Na druhou stranu, pro jakýkoliv dobře >> nakonfigurovaný způsob nasazení webové aplikace by neměl být problém >> zvádnout stovky požadavků za sekundu, a pokud bude požadavků více, stejně >> při takovém provozu se už asi dávno budeš poohlížet po dalším železe. >> >> 3. že nechceš používat mod_python já osobně chválím :) I když pro to mám >> jiné důvody, než statistiky na webu. WSGI je univerzálnější. (Ne že by v >> mod_pythonu nešel použít WSGI handler, věřím, že je zde řeč o standardním >> mod_python publisheru.) Mimochodem, abychom předešli obvyklému počátečnímu >> zádrhelu - WSGI není to samé, co mod_wsgi. Jedno je rozhraní a druhé je >> jedna z implementací tohoto rozhraní pro Apache. >> >> 4. proč ti nefunguje ten print samozřejmě nevím, ale vzhledem k tomu, že >> print vypisuje na standardní výstup, asi to bude tím, že svoji aplikaci >> spouštíš pomocí něčeho, co ten standardní výstup zavírá. Třeba kdybych já >> pomocí printu něco napsal, tak se mi to vypíše rovnou do konzole, kde je >> webovka spuštěná (tedy ne uživateli do prohlížeče), a na serveru >> standardní výstup bývá (když není zavřený) přesměrovaný do /dev/null, >> takže se to zapíše víš kam. Používat print ve webové aplikaci lze jen na >> ladění, jinak je to asi stejný nesmysl jako používat ho v GUI aplikacích. >> Jo a jestli si chtěl napsat něco jako print("<html>... kilobajty balastu >> ...</html>"), tak použij šablonu, je to o dost jednodušší a přehlednější >> :) >> >> Co by měl být tvůj další krok - doporučuji se podívat na Django. Je tu >> dost příznivců a uživatelů Djanga, takže i z tohoto pohledu je to >> perspektivní. >> >> Kdybys nechtěl jít do Djanga, tak se zkus třeba podívat >> nahttp://werkzeug.pocoo.org/a rozklikni si to "click here to see ...", je >> tam docela pěkná ukázka. Jak vidíš, snadno získáš objekt Request, ve >> kterém je vše co potřebuješ, odpověď vracíš objektem třídy Response a co >> děláš mezi tím je na tobě, to ti jako PHP programátorovi přijde asi >> bližší. Werkzeug není zrovna hodně používaná věc, ale mě se líbí, lze na >> ni demonstrovat, jak to dělat snadno a bez frameworkového molochu, proto >> to zde uvádím. Takových podobných nástrojů jako Werkzeug je více. >> >> Vůbec pro PHP programátora bude asi největší problém to, že dělat něco v >> Pythonu nebo Ruby neznamená jen naučit se jazyk a třeba jen jeden způsob >> jak to zprovoznit, ale už při čtení prvního tutorialu se na tebe valí věci >> jako ORM, MVC, URL routing, testování, ideálně ještě základy >> Linuxu/BSD/.... Tím se nenech odradit. >> >> Takže přeji hodně štěstí, ale stojí to za to :) >> >> PM >> >> PS. předpokládám, že tvůj další dotaz do této konference bude, kde na to >> najít hosting :) >> >> On 24.4.2010, at 16:01, Thomix wrote: >> >> >> >> > Zdravím, >> >> > už několik let programuju v php. Poslední dobou šilhám po python pro >> > web. Nainstaloval jsem si modul WSGI a zkusil si par tutoriálů. Ovšem >> > mám problém. >> >> > Např.: >> >> > def application(environ, start_response): >> > status = '200 OK' >> > output = 'hl' >> >> > response_headers = [('Content-type', 'text/plain'), >> > ('Content-Length', str(len(output)))] >> > start_response(status, response_headers) >> >> > return [output] >> >> > Tomuto celkem rozumím ale nechapu jak v tom více programovat ??? Když >> > si napíšu print("neco"); napiše to chybu a dále se to semnou nebaví. >> >> > Viz.: >> >> > def application(environ, start_response): >> > status = '200 OK' >> > output = 'hl' >> > print("neco"); >> >> > response_headers = [('Content-type', 'text/plain'), >> > ('Content-Length', str(len(output)))] >> > start_response(status, response_headers) >> >> > return [output] >> >> > Nějak nechápu v čem je problém. Mod_python nechci používat z důvodu >> > slabé odezvialesponň dle statistik co jsem četl na internetu. Mohl by >> > mě prosím někdo objasnit alespoň základ psaní ve WSGI ? >> >> > Děkuji :) >> > _______________________________________________ >> > Python mailing list >> > pyt...@py.cz >> >http://www.py.cz/mailman/listinfo/python > > 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 :) > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python