[Programiranje] Najbrži Python web okvir: wheezy.web

wheezy_web_logo

šištav.web nema logotip; Sliku sam napravio u GIMP-u.

Dugo sam prestao programirati na Pythonu, ali to me ne sprečava da s vama podijelim tehnologije koje znam;). Prije nekog vremena počeo sam tražiti "najbolji" mrežni okvir u Pythonu, budući da je onaj koji sam koristio (Web2Py) bio vraški spor. Dovelo me do mog istraživanja šištav.web; oni koji ga poznaju to su sigurno učinili kroz spektakularna mjerila koja je autor napravio na svom blogu:

python-najbrži-web-okvir

Znam, 25.000 zahtjeva u sekundi u usporedbi s ostatkom okvira to je pravi prolazak. Koristio sam se šištav.web neko vrijeme i moram reći da je to pravo umjetničko djelo. Gdje god ga pogledate: brzina, jednostavnost, sigurnost ... Sve. A iznad je djelo jedne osobe: Andrija Kornatskog.

  • Radi s Python 2, Python 3 y pypy. Čak i ako 3 daje bolje performanse, poželjno je nastaviti koristiti 2 dok 3 ne postane dovoljno zrelo.
  • Njegov dizajn je modularni, Tako da je šištav.web ima više stvari: šištav.predloška, wheezy.html, šištav.sigurnost... Koristite dijelove koje želite.
  • dokumentacija jednostavno i lako razumljivo.
  • Automatska HTML optimizacija (komprimira ga tako da zauzima manje bez upotrebe vanjskih alata).
  • Kako bi i moglo biti drugačije, jest besplatni softver i otvoreni izvor ; D.
  • itd ...

Na Andrijinom blogu postoje izvrsni vodiči za instalirati šištav.web osušiti o s i18n (više jezika); također objašnjava kako koristiti šištav.web s Nginxom. Loša strana svih njegovih tutorijala je ta pretpostavimo da koristite Debian, budući da nije testirao na drugim distribucijama.

Ako koristite Fedora a vas zanima šištav.web, imaš sreće! Evo naredbe koja će instalirati potrebne pakete da biste mogli slijediti njegove upute:

sudo dnf install python python-devel python3 python3-devel python-setuptools python-virtualenv libxml2 libxml2-devel libxslt libxslt-devel libmemcached libmemcached-devel memcached memcached-devel gzip ntpdate gettext uwsgi uwsgi-plugin-python socat nginx

Vodič koji Andriy nudi za instalaciju šištav.web s Nginxom koristite skriptu posebno dizajniranu za Debian, pa ćete to morati učiniti sami ako koristite drugi sustav. U mom slučaju uWSGI mi je dovoljan, pa ga nikada nisam probao.

Istina je da postoji šištav.web Smatram da je zločin koristiti drugi okvir, pa ako radite s Pythonom, pogledajte ga u najmanju ruku! Jedini nedostatak koji mu se može pripisati jest taj što ne donosi nikakav sloj apstrakcije koji olakšava rad s bazama podataka (niti to treba, ali postoje ljudi koji to cijene).

I to je sve. Kratki, ali relevantan članak. Obećavam da ću donijeti još zanimljivih tehnologija! Vidimo se ~.

Usput, znatiželja, znate li zašto se to naziva "piskanjem"? Andriy je fan Debiana. Ostavljam tamo;).


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Bruno cascio dijo

    Izvedba nije jedini faktor. U usporedbi s Djangom prilično je nečitljiv. I iskreno, 25000 zahtjeva u sekundi trebalo bi vidjeti na djelu, ali ja više volim ostati s 15000 (django) da pišem zdravo, a ostatak posla delegiram na infrastrukturu koja je STVARNO ona koja će primiti ili ne, 25000 zahtjeva.

    Pozdrav! Hvala na podacima 🙂

    1.    Bruno cascio dijo

      Nepotrebno je reći da za usporedbu koristim stare verzije drugih okvira ...

      1.    lajto dijo

        Referentni članak je iz 2012. On ga je ponovno izmijenio i proširio 2013. godine, a sam je precizirao da su iz te godine: «Najnovije dostupne verzije od ovog pisanja (15. ožujka 2013.)»

    2.    lajto dijo

      Nečitkost koju spominjete mislim da nije toliko loša. Razumijem da se često traži lakoća programiranja, ali mislim da zapravo nema značajnih razlika. Koristio sam Web2Py godinu dana i uvjeravam vas da je to jedan od najjednostavnijih raspoloživih okvira. Naravno, njegova izvedba je na mnogo načina užasna ... U referentnom članku i sam Massimo Di Pierro (kreator Web2Py) vodi raspravu s Andriyjem u kojoj konačno priznaje da se ima što poboljšati; razgovarajući s Andriyem na IRC-u, rekao mi je "postoji široko prihvaćena filozofija stavljanja svega u okvire i nadimanja značajkama, čak i ako se većina ne koristi", i koliko je bio u pravu ...

      O tome što kažete o infrastrukturi, djelomično dijelim ono što kažete; Razlika od 10.000 je MNOGO, pogotovo kada govorimo o najpopularnijem i zrelom okviru u odnosu na vrlo noviji i malo poznati. Moj pristup je uvijek kombinirati maksimalnu učinkovitost s maksimalnom produktivnošću, a mislim da wheezy.web to najbolje radi. Koristio sam Web2Py (najviše), Django, Pyramid i wheezy.web i uvjeravam vas da nema premca. Jednom kada se prilagodite njegovom načinu rada, ne odvajate se od njega. Jedine prednosti Djanga su velika zajednica koju ima i resursi na cijelom Internetu; to će reći: lakoća. wheezy.web prilično je nov u usporedbi i vrlo malo ljudi zna za to; ako idete lako, bolje Web2Py ili Django xD.

      Ne želim se proširiti, ali kada govorimo o zahtjevima u sekundi govorimo o istodobnosti. Ako se traži istodobnost, Python nije odgovarajući jezik. Tome služe drugi jezici poput Erlanga ili Haskella (i ako me požurite, Rust). Ali upravo iz tog razloga impresivno je da je wheezy.web, zauzimajući tako malo koda, koji je djelo osobe u slobodno vrijeme i niza drugih čimbenika, uspio postići takvu izvedbu.

      Razumijem što kažete o "zdravom pisanju", ali nikad ne znate koliko projekt može dugoročno narasti. Koristeći učinkovitije i istodobne alate, osim što je jednostavan (držim da je wheezy.web jednostavan zbog performansi koje ima), uštedite novac i napravite ljestvicu projekta dulje bez promjene jezika. Na kraju je sve u novcu koji treba platiti za svoj poslužitelj. U PHP-u postoje vrlo poznate web stranice, kada je PHP užasnih performansi ... Ali kako riješiti taj problem? Kupnja boljih poslužitelja. Drugim pristupom to se rješava boljim programiranjem i uštedom resursa: P.

      Žao mi je što sam se toliko produžio. Jako sam strastven prema xDDD-u. Pozdrav!

      1.    Bruno cascio dijo

        Savršeno sam razumio što mislite, ali upravo zbog onoga što spominjete, ako projekt teži rasti ili ne, budući da idemo s piskanjem, ne postoji sloj baze podataka.

        Po mom gledištu, najbolje je ne vjenčati se ni s jednim jezikom. Ako želite istodobnost, možete koristiti i Node koji radi na C.

        Ono što spominjete o izvedbi nije samo vertikalno skaliranje (slučaj PHP-a), na primjer, Facebook nudi HHVM, koji sam pročitao (nije testiran), a koji poboljšava performanse za 50%, a to nije kupnja poslužitelja. Obični PHP bez slojeva predmemorije i / ili drugih načina za optimizaciju jednako je "loš" kao i bilo koji drugi jezik bez potonjeg, a mislim loše ako im se da ime, nije samo "bolji kod".

        Živjeli! 🙂

      2.    lajto dijo

        Da vidimo, ono što nema je sloj apstrakcije. Ali koristite odgovarajuću knjižnicu ili modul za rad s bazom podataka i izvan nje, više nema tajne. Primjerice, apstrakcijski sloj Web2Py vrlo je jednostavan, ali izvedba dramatično pada jer ne možete čak niti napisati optimizirani SQL. Sve je na Pythonu; lako, ali zauzvrat za izvedbu.

        Znam HHVM i upravo su zato jezici poput PHP užasni za moderno doba; da je Facebook u Haskellu ili Erlangu ne bi bilo potrebno stvarati HHVM. Koristite predmemoriju, komprimirajte datoteke koje se šalju i primaju itd. to su očiti aspekti svakog razvoja. Problem je u tome što se alat mora mjeriti :). A postoje alati koji to ne daju. Najbolji primjer za to je JavaScript ... U tom slučaju barem postoje čuda poput CoffeeScript, Dart itd. koji se prevode u JS.

        Pozdrav!

      3.    Bruno cascio dijo

        Savršen! 🙂

        Samo jedna stvar, facebook ako koristite haskell, točnije Haxl 🙂

      4.    Prestati dijo

        Pa, puno koristim web2py, slažem se da to nije najbrži okvir, ali čini se da je ta mjera pomalo neumjesna, čak i više kad govorimo o prije 3 godine, zdravo glupa aplikacija web2py vrlo je učitana u usporedbi drugim okvirima, ali iskreno nisam iskusio onu bezvrijednu razliku u performansama između mojih aplikacija napisanih na web2py i django.

        Usput, u web2py ako možete pisati SQL za izravno izvršavanje upita.

        Pozdrav.

  2.   urKh dijo

    Najbrži mrežni okvir koji kažete, ali ne pokazujete nijedan primjer i druge ključne čimbenike, poput razvoja, produktivnosti, dokumentacije. S postojanjem djanga, ne znam zašto se čini da je zločin ne koristiti ovo: str

    1.    lajto dijo

      - U dokumentaciji već postoje primjeri. Na njegovoj stranici BitBucket također: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Što se tiče razvoja i produktivnosti, osobno mislim da je sažetak u "jednostavnosti" dobra opcija. Koji su još jednostavniji i lakši okviri? Naravno. Ali ne s toliko performansi.
      - Stavio sam vezu na dokumentaciju u članku xDDD.
      - Zašto kažem da je to zločin, jer vjerujem da bi web stranica trebala biti što učinkovitija u svakom pogledu. Kao što sam već spomenuo, postoje okviri lakši za upotrebu, ali korištenje wheezy.web nije ni programiranje C. Morate se potruditi više :).

      Pozdrav ^^.

  3.   lajto dijo

    Usput, u slučaju da je netko lijen saznati i pomisli da Wheezy Web pobjeđuje samo u zahtjevima u sekundi ... Evo još nekoliko mjerila:

    http://paste.desdelinux.net/5128 (filtar neželjene pošte od DesdeLinux Ne dopušta mi da stavim toliko linkova)

    Ispričavam se što ih prethodno nisam uključio. Mislio sam da je jedan dovoljan da privučem znatiželju xD. Pozdrav!

  4.   fenriz dijo

    Zasad zadovoljan s Djangom.

    1.    oclay dijo

      Eh, svaki put kad pročitam ove stvari, to me razljuti, pomislio sam da je to samo s php okvirima (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Ako Django već ima zajednicu (prilično veliku) i izvrstan je okvir zašto se umjesto gubljenja vremena na ponovno otkrivanje kotača ne pridružite django timu. @ Lajto u vašem razgovoru s autorom wheezy.web, zašto ga ne pitate nikad nisi razmišljao o tome da se pridružiš django timu, dovraga. Živjeli ..

      1.    lajto dijo

        Iako su oba mrežni okviri, oni imaju vrlo različite pristupe. Django je težak, ima puno koda, dok je wheezy.web lagan i predan je jednostavnosti i optimizaciji. Prema mojim saznanjima, wheezy.web jedini je istinski modularni Python web okvir (to jest, on dijeli sav vaš kôd na različite dijelove koji mogu raditi samostalno). Ima mnoštvo karakteristika koje ga razlikuju od ostalih.

        Zašto se ne biste pridružili Djangu, kažete? Jer Django je dizajniran s potpuno drugačijim pristupima. Kako primijeniti modularni dizajn na Django? Morao bi se prepraviti praktički od nule! Isto je i s mnogim drugim pitanjima.

        Razumijem osjećaj da je "bolje jedan okvir koji dobro funkcionira s velikom zajednicom", ali to nije tako lako. Dakle, razumijete, čineći površnu asocijaciju, Django je poput Debiana, a wheezy.web poput ... Arch? Gentoo? To je definitivno loš primjer, ali mislim da se xDDD razumije.

        Pozdrav!

  5.   Ulises dijo

    Što kažete na Lajto, hej, pravim aplikaciju i pročitao sam dokumentaciju wheezy.web i to je prvi python web framework koji sam razumio prvi put 🙂 Vidite, nemam puno znanja o mrežama i webu, ali znam imaju posebnu privlačnost prema programiranju.
    Možete li mi pomoći kako izmijeniti hello world kako bi on postao javni poslužitelj? Možda je to vrlo glupo pitanje, oprostite, ali u dokumentaciji ne mogu pronaći kako to učiniti.
    Još jedno pitanje, 😉 u metodama get i post, budući da vraćam podatke koji nisu html stranice, vraćam li podatke onakve kakvi jesu? kao niz ili popis ili bilo koja vrsta podataka. Klijent aplikacija u androidu.

    1.    lajto dijo

      Pozdrav Ulises! Tako mi je drago što testirate wheezy.web: D.

      Što se tiče vašeg komentara, toplo preporučujem da ne montirate vlastitu strukturu. Onaj koji Andriy vozi prilično je dobar, pa preporučujem da ga slijedite. U članku postoje dvije poveznice na Andrijin blog gdje objašnjava korake s i18n i bez i18n. U slučaju da je malo zbunjujuće, u nastavku ću objasniti kako to učiniti bez i18n:

      Otvorite terminal i pokrenite ove četiri naredbe (zamijenite "test-web" nazivom mape koju želite za svoj projekt):

      wget https://bitbucket.org/akorn/wheezy.web/downloads/quickstart-empty.zip

      raspakirajte quickstart-empty.zip

      mv quickstart-empty test-web

      rm quickstart-empty.zip

      Ako želite koristiti PIL, izmijenite datoteku setup.py i raskomentirajte odgovarajući kôd. Kad ste spremni, pokrenite sljedeće tri naredbe:

      web-test-cd

      napraviti env

      env / bin / easy_install uwsgi

      Vaš je poslužitelj već montiran. Ako želite napraviti brzu usporedbu da biste vidjeli funkcionira li, unutar mape pokrenete:

      napraviti test mjerilo poklopca za nos

      Preporučujem vam da odete na "etc / development.ini" i promijenite "limit-as = 120" u "limit-as = 512". Ovo je koliko će MB RAM-a "pojesti" uWSGI, pa bi se mogao povećati u budućnosti ako bude potrebno.

      Napokon, svaki put kad želite otvoriti poslužitelj, bilo bi dovoljno da se locirate u mapi svog projekta i izvršite:

      napraviti uwsgi

      Za ostala pitanja ... Prema zadanim postavkama, poslužitelj je programiran za pokretanje na localhostu. Ako ga želite učiniti javnim, jer ga već imate i želite ga koristiti na fizičkom poslužitelju u produkciji, samo otvorite "src / app.py" i pronađite sljedeće: make_server (", 8080, main). Prvi je parametar prazan niz, zar ne? Pa, tu ste stavili IP svog poslužitelja. Drugi je parametar port koji želite koristiti, a koji je prema zadanim postavkama 8080.

      Napokon, ono što kažete o vraćanju nečega što nije HTML, naravno da možete! U dokumentaciji objašnjavaju kako sve vratiti: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Pozdrav! Sve što mi kažete;).

      1.    Ulises dijo

        Hvala ti puno Lajto, stvarno si razjasnio moje sumnje, pokušao sam s django-om, ali kao što sam ti spomenuo, nisam sistemski inženjer, a django mislim da donosi puno više od onoga što mi je trebalo, upotrijebi wheezy.web za testiranje aplikacije u androidu i komunicirajte s serverom. Nešto vrlo jednostavno, ali prilično brzo i praktično. Hej, još jedno pitanje, nedavno sam vidio da je velika frka s http / 2, kako mogu znati na kojem protokolu wheezy.web radi? Mogu li napraviti poslužitelj koji koristi http / 2 u wheezy.web? Ili mi preporučite knjigu, blog, tutorial koji se nalazi u blokovima koji mogu objasniti cijelu stvar mreža i komunikacija. Hvala još jednom.

      2.    lajto dijo

        Pozdrav opet Ulises ^^.

        HTTP / 2 je vrlo nov i neće se ozbiljno usvajati još godinu dana, zato se nemojte zamarati s tim :). Ako želite sigurnost, upotrijebite HTTPS i to je to.

        Nisam siguran što Wheezy Web koristi za HTTP, pa pretpostavljam da će to biti WSGI.

        Pozdrav!

  6.   lajto dijo

    Usput, malo nešto od ničega. Na nekim distribucijama pojavljuje se poruka UPOZORENJE o .python-jajima. Ništa se ne događa ako se pojavi, ali ako vam smeta možete ga ukloniti pomoću:

    chmod go = ~ / .python-jaja

    Pozdrav!

  7.   Diego dijo

    Koristim Django, ali provjerit ću dokumentaciju da vidim kako to funkcionira. Hvala na dijeljenju. Pozdrav

  8.   JD Villegas dijo

    Može se koristiti iz prozora !!!, postoji li tutorial?

    hvala

  9.   lalita dijo

    Bok, imamo puno iskustva s Pythonom. Čini mi se da veslaju protiv struje. Najbolje što je ikad izumljeno za ovaj jezik je Django. Mogu izraditi statistiku i savjetovati se sa stotinama programera iz cijelog svijeta, dat će vam više od 80%, većina njih nije u krivu. Ako veslaju ili plivaju protiv struje, prije ili kasnije utopit će se ...