On Apr 25, 9:48 am, Jirka Vejrazka <jirka.vejra...@gmail.com> wrote: > 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/arozklikni 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 > > pyt...@py.cz > >http://www.py.cz/mailman/listinfo/python
Tady nejde ani tak o moje projekty, byla to pouze ukazka ze bych se rad zbavil PHP a zacal v necem co ma budoucnost. Problem nastava v tom ze pracuju jako programator PHP. V praci si muzu diktovat v cem bude redakcni system naprogramovany, proto bych rad presel na python. Proto nemam v lasce moc frameworky s jednotnou administraci. Sice si muzu vybrat v cem to budu programovat ale kolega si diktuje jak bude administrace vypadat. Doufal jsem ze Python si nejak sikovne poradi s vecma jako php viz. $_GET[] nebo $_POST[]. Proto se treba divim proc nefunguje print(""); pro web ale pres konzoli ho rozjedu. Existuje neco co by usnadnovalo praci s vecma jako je GET atd a pritom bych v tom mohl delat i vlastni administraci a sablonovaci system ? _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python