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

wheezy_web_logo

wheezy.web nema logotip; Sliku sam napravio u GIMP-u.

Dugo sam prestao da programiram na Pythonu, ali to me ne sprečava da sa vama podijelim tehnologije koje znam;). Prije nekog vremena upustio sam se u potragu za "najboljim" web okvirom u Pythonu, jer je onaj koji sam koristio (Web2Py) bio prokleto spor. Moje istraživanje me dovelo do toga wheezy.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. I sam sam koristio wheezy.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 Modularno, tako da wheezy.web ima još stvari: wheezy.template, wheezy.html, wheezy.security... 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, jeste besplatni softver i otvoreni kod ; D.
  • itd ...

Na Andrijinom blogu postoje sjajni vodiči za instalar wheezy.web osusiti o sa i18n (više jezika); takođe objašnjava kako koristiti wheezy.web sa Nginxom. Loša strana svih njegovih vodiča je ta pretpostavimo da koristite Debian, jer nije testirao na drugim distribucijama.

Ako koristite fedora i vas zanima wheezy.web, imaš sreće! Evo naredbe koja će instalirati potrebne pakete da biste mogli slijediti njegove vodiče:

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 wheezy.web sa Nginxom koristi skriptu dizajniranu posebno za Debian, pa ćete to morati učiniti sami ako koristite drugi sistem. U mom slučaju, uWSGI mi je dovoljan, pa ga nikada nisam probao.

Istina je da postoji wheezy.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 je taj što ne donosi nikakav sloj apstrakcije kako bi olakšao rad s bazama podataka (niti treba, ali postoje ljudi koji to cijene).

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

Usput, kuriozitet, da li znate zašto se to zove "piskavac"? Andriy je fan Debiana. Ostavljam tamo;).


22 komentara, ostavi svoj

Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  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 obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Bruno cascio rekao je

    Performanse nisu jedini faktor. U poređenju sa Djangom, prilično je nečitljiv. I iskreno, 25000 zahtjeva u sekundi treba vidjeti na djelu, ali ja više volim da ostanem sa 15000 (django) da pišem zdravo, a ostatak posla delegiram na infrastrukturu, koja će zaista biti ona koja će primiti ili ne, 25000 zahtjeva.

    Pozdrav! Hvala na podacima 🙂

    1.    Bruno cascio rekao je

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

      1.    lajto rekao je

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

    2.    lajto rekao je

      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 debatu s Andriyjem u kojoj konačno priznaje da se mora još puno poboljšati; razgovarajući s Andriyem na IRC-u, rekao mi je "postoji široko prihvaćena filozofija stavljanja svega u okvire i nadimanja sa značajkama, čak i ako se većina ne koristi", i koliko je bio u pravu ...

      U vezi s onim što kažete o infrastrukturi, djelomično dijelim ono što kažete; 10.000 razlike je MNOGO, pogotovo kada govorimo o najpopularnijem i zrelijem okviru u odnosu na vrlo noviji i malo poznati. Moj pristup je uvijek kombinirati maksimalnu efikasnost 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 širom Interneta; to će reći: lakoća. wheezy.web je prilično nov u usporedbi i vrlo malo ljudi zna za njega; ako idete lako, bolje Web2Py ili Django xD.

      Ne želim proširiti, ali kada govorimo o zahtjevima u sekundi govorimo o paralelnosti. Ako se traži podudarnost, Python nije odgovarajući jezik. Tome služe i drugi jezici poput Erlanga ili Haskela (i ako me požurite, Rust). Ali upravo iz tog razloga impresivno je da je wheezy.web koji zauzima tako malo koda, koji je djelo osobe u slobodno vrijeme i drugih faktora, uspio postići takve performanse.

      Razumijem što kažete o „zdravom pisanju“, ali nikad ne znate koliko projekt može dugoročno narasti. Korištenjem efikasnijih i istovremenih alata, kao i jednostavnih (držim da je wheezy.web jednostavan zbog performansi koje ima), uštedite novac i napravite skalu projekta duže bez promjene jezika. Na kraju je sve u novcu koji treba platiti svom serveru. U PHP-u postoje vrlo poznate web stranice, kada je PHP užasnih performansi ... Ali kako riješiti taj problem? Kupovina boljih servera. Drugim pristupom to se rješava boljim programiranjem i uštedom resursa: P.

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

      1.    Bruno cascio rekao je

        Savršeno sam razumio na što mislite, ali upravo zbog onoga što spominjete, ako projekt ima tendenciju rasta ili ne, jer mi idemo s piskanjem da nema sloja baze podataka.

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

        Ono što spominjete o performansama nije samo vertikalno skaliranje (slučaj PHP-a), Facebook na primjer nudi HHVM, koji sam pročitao (nije testiran), a koji poboljšava performanse za 50%, a to nije kupovina servera. Običan 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 dam ime, to nije samo "bolji kod".

        Živjeli! 🙂

      2.    lajto rekao je

        Da vidimo, ono što nema je sloj apstrakcije. Ali koristite odgovarajuću biblioteku ili modul za rad s bazom podataka i izvan nje, više nema tajne. Na primjer, sloj apstrakcije Web2Py vrlo je jednostavan, ali performanse dramatično padaju jer ne možete čak ni napisati optimizirani SQL. Sve je u Pythonu; lako, ali zauzvrat za performanse.

        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čigledni aspekti svakog razvoja. Problem je u tome što se alat mora mjeriti :). A postoje alati koji to ne pružaju. 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 rekao je

        Savršeno! 🙂

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

      4.    Cesar rekao je

        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 opterećena u usporedbi na druge okvire, ali iskreno nisam iskusio onu užasnu razliku u performansama između mojih aplikacija napisanih na web2py i django.

        Usput, u web2py ako možete pisati SQL za izvođenje upita direktno.

        Pozdrav.

  2.   urKh rekao je

    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 rekao je

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

      Pozdrav ^^.

  3.   lajto rekao je

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

    http://paste.desdelinux.net/5128 (el filtro de spam de DesdeLinux no me deja poner tantos links)

    Izvinjavam se što ih prethodno nisam uključio. Mislio sam da je jedan dovoljan da privučem radoznalost xD. Živjeli!

  4.   fenriz rekao je

    Do sada zadovoljan Djangom.

    1.    oclay rekao je

      Ma, svaki put kad pročitam ove stvari, to me naljuti, pomislio sam da je to samo s php okvirima (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Ako Django već ima zajednicu (prilično veliku) i odličan je okvir, zašto se, umjesto da gubite vrijeme na ponovno otkrivanje kotača, nemojte pridružiti django timu. @ Lajto u razgovoru s autorom wheezy.web, zašto ne pitate ga? Ako nikada niste razmišljali o tome da se pridružite django timu, dovraga. Živjeli ..

      1.    lajto rekao je

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

        Zašto se ne biste pridružili Djangu, kažete? Jer Django je dizajniran sa potpuno drugačijim pristupima. Kako primijeniti modularni dizajn na Django? Morao bi se prepraviti praktično od nule! Isto je i sa 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? Definitivno je loš primjer, ali mislim da se xDDD razumije.

        Pozdrav!

  5.   Ulises rekao je

    Š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 da modifikujem hello world tako da postane javni server? Možda je to vrlo glupo pitanje, izvinite, ali u dokumentaciji ne mogu pronaći kako to učiniti.
    Još jedno pitanje, 😉 u metodama get i post, dok vraćam informacije koje nisu html stranice, vraćam li informacije takve kakve jesu? kao niz ili lista ili bilo koja vrsta podataka. Klijent aplikacija u androidu.

    1.    lajto rekao je

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

      Što se tiče komentara, toplo preporučujem da ne montirate vlastitu strukturu. Onaj koji Andriy vozi je prilično dobar, pa preporučujem da ga slijedite. U članku postoje dvije veze do Andrijinog bloga 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" imenom 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, modificirajte 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 server već postavljen. Ako želite napraviti brzu referentnu točku da vidite da li radi, nalazeći se u mapi, pokrenite:

      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 uWSGI "pojesti", pa bi se moglo povećati u budućnosti ako bude potrebno.

      Napokon, svaki put kada želite otvoriti svoj server, bilo bi dovoljno da se locirate u mapi svog projekta i izvršite:

      make uwsgi

      Ostala pitanja ... Po defaultu, poslužitelj je programiran za pokretanje na localhostu. Ako to ž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 parametar je prazan niz, zar ne? Pa, tu ste stavili IP svog servera. Drugi parametar je 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 rekao je

        Hvala vam puno Lajto, zaista ste razjasnili moje sumnje, pokušao sam s django, ali kao što sam vam rekao nisam inženjer sistema i django mislim da donosi mnogo više od onoga što mi je trebalo, upotrijebite wheezy.web da testirate aplikaciju u android i komunicirajte s serverom. Nešto vrlo jednostavno, ali prilično brzo i praktično. Hej, još jedno pitanje, nedavno sam vidio da postoji velika gužva s http / 2, kako da znam na kojem protokolu radi wheezy.web? Mogu li napraviti server koji koristi http / 2 u wheezy.web? Ili mi preporučite knjigu, blog, tutorial koji je u blokovima koji mogu objasniti cijelu stvar mreža i komunikacija. Hvala još jednom.

      2.    lajto rekao je

        Pozdrav ponovo Ulises ^^.

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

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

        Pozdrav!

  6.   lajto rekao je

    Inače, nešto malo 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 rekao je

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

  8.   JD Villegas rekao je

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

    hvala

  9.   lalita rekao je

    Bok, imamo puno iskustva s Pythonom. Čini mi se da veslaju protiv struje. Najbolja stvar koja je ikad izmišljena za ovaj jezik je Django. Oni mogu napraviti statistiku i savjetovati se sa stotinama programera iz cijelog svijeta, dat će vam više od 80%, većina njih ne griješi. Ako veslaju ili plivaju protiv struje, prije ili kasnije utopit će se ...