[Programare] Cel mai rapid cadru web Python: wheezy.web

wheezy_web_logo

wheezy.web nu are sigla; Am făcut imaginea în GIMP.

Am oprit programarea în Python de mult timp, dar asta nu mă împiedică să împărtășesc cu tine tehnologiile pe care le cunosc;). Cu ceva timp în urmă am intrat în căutarea celui mai bun cadru web din Python, deoarece cel pe care l-am folosit (Web2Py) a fost diabolic lent. Cercetările mele m-au condus la wheezy.web; cei care îl cunosc cu siguranță au făcut-o prin reper spectaculos realizat de autor pe blogul său:

python-fastest-web-framework

Stiu, 25.000 de cereri pe secundă în comparație cu restul de cadre este o adevărată trecere. M-am folosit de mine wheezy.web pentru o vreme și trebuie să spun că este o adevărată operă de artă. Oriunde îl priviți: viteză, simplitate, securitate ... Totul. Și deasupra ei este lucrarea unei singure persoane: Andriy Kornatskyy.

  • Funcționează cu Python 2, Python 3 y pypy. Chiar dacă 3 oferă performanțe mai bune, este de preferat să continuați să utilizați 2 până când 3 este suficient de matur.
  • Designul său este modular, așa wheezy.web sunt mai multe lucruri: wheezy.sablon, wheezy.html, wheezy.securitate... Folosiți piesele dorite.
  • documentație simplu și ușor de înțeles.
  • Optimizare automată HTML (îl comprimă astfel încât să preia mai puțin fără a utiliza instrumente externe).
  • Cum nu putea fi altfel, este software gratuit și open source ; D.
  • etc ...

Pe blogul Andriy există tutoriale minunate pentru instala wheezy.web să se usuce o cu i18n (mai multe limbi); explică, de asemenea modul de utilizare wheezy.web cu Nginx. Dezavantajul tuturor tutorialelor sale este că presupuneți că utilizați Debian, deoarece nu a testat pe alte distrosuri.

Dacă folosești Fedora si esti interesat wheezy.web, esti norocos! Iată comanda care va instala pachetele necesare pentru a putea urma tutorialele sale:

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

Tutorialul pe care Andriy îl oferă să îl instaleze wheezy.web cu Nginx utilizați un script special conceput pentru Debian, deci va trebui să îl faceți singur dacă utilizați un alt sistem. În cazul meu, uWSGI este suficient pentru mine, așa că nu l-am încercat niciodată.

Adevărul este că există wheezy.web Mi se pare o infracțiune să folosești un alt cadru, așa că, dacă lucrezi cu Python, aruncă o privire la cel puțin! Singurul dezavantaj care i se poate atribui este că nu aduce niciun strat de abstractizare pentru a facilita lucrul cu bazele de date (nici nu trebuie, dar există oameni care îl apreciază).

Și asta e tot. Un articol scurt, dar relevant. Promit să aduc mai multe tehnologii interesante! Ne vedem ~.

Apropo, o curiozitate, știi de ce se numește „șuierător”? Andriy este un fan al Debian. O las acolo;).


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Bruno cascio el a spus

    Performanța nu este singurul factor. Comparativ cu Django, este destul de necitit. Și sincer, cele 25000 de cereri pe secundă ar trebui să fie văzute în acțiune, dar prefer să rămân cu 15000 (django) să scrie sănătos, iar restul muncii delegă la infrastructură, care este cu adevărat cea care va primi sau nu , 25000 cereri.

    Noroc! Mulțumim pentru date 🙂

    1.    Bruno cascio el a spus

      Inutil să spun că, pentru a face referință, folosesc versiuni vechi ale altor cadre ...

      1.    lajto el a spus

        Articolul de referință este din 2012. El l-a modificat și l-a extins din nou în 2013 și el însuși a precizat că sunt din acel an: «Ultimele versiuni disponibile din această scriere (15 martie 2013)»

    2.    lajto el a spus

      Ilizibilitatea pe care o menționezi nu cred că este atât de rea. Înțeleg că se caută ușor programarea, dar nu cred că există diferențe considerabile. Am folosit Web2Py timp de un an și vă asigur că este unul dintre cele mai ușor de utilizat framework-uri disponibile. Desigur, performanța sa este teribilă din multe puncte de vedere ... În articolul de referință însuși Massimo Di Pierro (creatorul Web2Py) are o dezbatere cu Andriy în care admite în cele din urmă că există multe de îmbunătățit; vorbind cu Andriy pe IRC, mi-a spus „există o filosofie larg acceptată de a pune totul în cadre și de a le umfla cu trăsături, chiar dacă majoritatea nu sunt utilizate”, și cât de corect avea el ...

      Despre ceea ce spui despre infrastructură, împărtășesc parțial ceea ce spui; Diferența de 10.000 este MULȚI, mai ales atunci când vorbim despre cel mai popular și mai matur cadru față de unul foarte recent și puțin cunoscut. Abordarea mea este întotdeauna de a combina eficiența maximă cu productivitatea maximă și cred că wheezy.web face cel mai bine acest lucru. Am folosit Web2Py (cel mai mult), Django, Pyramid și wheezy.web și vă asigur că este de neegalat. Odată ce te adaptezi la felul său de a face lucrurile, nu te detașezi de el. Singurele avantaje ale Django sunt comunitatea mare pe care o are și resursele care se găsesc pe internet; adică: ușurință. wheezy.web este destul de nou în comparație și foarte puțini oameni știu despre asta; dacă mergeți ușor, mai bine Web2Py sau Django xD.

      Nu vreau să mă extind, dar când vorbim despre cereri pe secundă vorbim despre concurență. Dacă se caută concurența, Python nu este limbajul adecvat. Pentru asta există și alte limbi precum Erlang sau Haskell (și dacă mă grăbești, Rust). Dar tocmai din acest motiv este impresionant faptul că wheezy.web care ocupă atât de puțin cod, fiind munca unei persoane în timpul liber și alți factori, a reușit să obțină o astfel de performanță.

      Înțeleg ce spui despre „scrierea sănătoasă”, dar nu știi niciodată cât de mult poate crește un proiect pe termen lung. Folosind instrumente mai eficiente și concurente, pe lângă faptul că este simplu (susțin că wheezy.web este simplu pentru performanțele pe care le are), economisiți bani și faceți proiectul să se extindă mai mult, fără a schimba limba. În cele din urmă, totul este în banii pe care trebuie să-i plătească pentru serverul său. Există site-uri web foarte renumite în PHP, când PHP are o performanță oribilă ... Dar cum rezolvi problema? Cumpărarea de servere mai bune. Cu cealaltă abordare, se rezolvă programând mai bine și economisind resurse: P.

      Îmi pare rău că m-am extins atât de mult. Sunt foarte ușor pasionat de xDDD. Noroc!

      1.    Bruno cascio el a spus

        Am înțeles perfect la ce te referi, dar tocmai din cauza a ceea ce menționezi, dacă un proiect tinde să crească sau nu, din moment ce mergem cu wheezy nu există un strat de bază de date.

        Din punctul meu de vedere, cel mai bine este să nu te căsătorești cu nicio limbă. Dacă doriți concurență, puteți utiliza și Node, motorul său funcționează în C.

        Ceea ce menționați despre performanță, nu este doar scalarea pe verticală (cazul PHP), Facebook oferă, de exemplu, HHVM, pe care l-am citit (nu a fost testat), care îmbunătățește performanța cu 50% și aceasta nu este cumpărarea de servere. Pur și simplu, PHP fără straturi de cache și / sau alte modalități de optimizare este la fel de „rău” ca orice alt limbaj fără acesta din urmă și vreau să spun rău pentru a le da un nume, nu este doar „programare mai bună”.

        Noroc! 🙂

      2.    lajto el a spus

        Să vedem, nu există un strat de abstractizare. Dar utilizați biblioteca sau modulul corespunzător pentru a lucra cu baza de date și în afara, nu mai există mister. Stratul de abstractizare Web2Py este foarte simplu, de exemplu, dar performanța scade dramatic, deoarece nici măcar nu puteți scrie SQL optimizat. Totul este în Python; ușor, dar în schimbul performanței.

        Cunosc HHVM și tocmai de aceea limbajele ca PHP sunt teribile pentru vremurile moderne; dacă Facebook ar fi în Haskell sau Erlang nu ar fi fost necesar să se creeze HHVM. Utilizați memoria cache, comprimați fișierele care sunt trimise și primite etc. sunt aspecte evidente ale oricărei dezvoltări. Problema este că instrumentul trebuie să măsoare :). Și există instrumente care nu le oferă. Cel mai bun exemplu în acest sens este JavaScript ... În acest caz, cel puțin există minuni precum CoffeeScript, Dart etc. care compilează la JS.

        Salutări!

      3.    Bruno cascio el a spus

        Perfect! 🙂

        Un singur lucru, facebook dacă folosești haskell, mai exact Haxl 🙂

      4.    Înceta el a spus

        Ei bine, eu folosesc web2py foarte mult, sunt de acord că nu este cel mai rapid cadru, dar acest benchmark pare puțin deplasat, cu atât mai mult când vorbim de acum 3 ani, aplicația hello dumb web2py este foarte încărcată în comparație cu alte cadre, dar sincer nu am experimentat acea diferență abisală de performanță între aplicațiile mele scrise în web2py și django.

        Apropo, în web2py dacă puteți scrie SQL pentru a efectua interogări direct.

        Salutări.

  2.   urKh el a spus

    Cel mai rapid cadru web pe care îl spuneți, dar nu afișați niciun exemplu și alți factori cheie, cum ar fi dezvoltarea, productivitatea, documentarea. Cu django existent, nu știu de ce pare a fi o infracțiune să nu folosești acest lucru: p

    1.    lajto el a spus

      - Există deja exemple în documentație. Pe pagina sa BitBucket, de asemenea: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - În ceea ce privește dezvoltarea și productivitatea, personal cred că rezumarea acesteia în „simplitate” este o opțiune bună. Care sunt cadrele mai simple și mai ușoare încă? Clar. Dar nu cu atâta performanță.
      - Am pus linkul către documentație în articolul xDDD.
      - De ce spun că este o infracțiune este pentru că eu cred că o pagină web ar trebui să fie cât mai eficientă, în orice mod. Așa cum am menționat anterior, există cadre care sunt mai ușor de utilizat, dar utilizarea wheezy.web nu este nici programarea C. Trebuie doar să încercați mai mult :).

      Salutări ^^.

  3.   lajto el a spus

    Apropo, în cazul în care cineva este leneș să afle și crede că Wheezy Web câștigă doar în cereri pe secundă ... Iată câteva alte repere:

    http://paste.desdelinux.net/5128 (filtrul de spam al DesdeLinux Nu mă lasă să pun atât de multe link-uri)

    Îmi cer scuze pentru că nu le-am inclus anterior. Am crezut că unul este suficient pentru a atrage curiozitatea xD. Noroc!

  4.   fenriz el a spus

    Până acum mulțumit de Django.

    1.    lut el a spus

      Ehh de fiecare dată când citesc aceste lucruri mă enervează, am crezut că este doar cu framework-uri php (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Dacă Django are deja o comunitate (destul de mare) și este un cadru excelent, de ce, în loc să pierdeți timpul reinventând roata, nu vă alăturați echipei django. @ Lajto în conversația dvs. cu autorul cărții wheezy.web de ce nu îl întrebați dacă nu te-ai gândit niciodată să te alături echipei django, la naiba.

      1.    lajto el a spus

        Deși ambele sunt cadre web, au abordări foarte diferite. Django este greu, are mult cod, în timp ce wheezy.web este ușor, este dedicat simplității și optimizării. Din câte știu, wheezy.web este singurul cadru web Python cu adevărat modular (adică împarte tot codul dvs. în diferite părți care pot funcționa independent). Are multe caracteristici care îl diferențiază de restul.

        De ce să nu te alături Django, spui? Pentru că Django a fost conceput cu abordări complet diferite. Cum aplicați un design modular lui Django? Ar trebui refăcut practic de la zero! La fel cu multe alte probleme.

        Înțeleg că „mai bine un singur cadru care funcționează bine cu o comunitate mare”, dar nu este atât de ușor. Așa că înțelegeți, făcând o asociere superficială, Django este ca Debian și wheezy.web este ca ... Arch? Gentoo? Cu siguranță un exemplu rău, dar cred că xDDD este înțeles.

        Salutări!

  5.   Ulises el a spus

    Ce zici de Lajto, hei, fac o aplicație și am citit documentația wheezy.web și este primul cadru web Python pe care l-am înțeles prima dată 🙂 Vezi, nu am prea multe cunoștințe despre rețele și web, dar Am o atracție specială față de programare.
    Ai putea să mă ajuți cum să modific lumea Hello pentru a o transforma într-un server public? Poate că este o întrebare foarte prostească, îmi pare rău, dar nu găsesc în documentație cum să o fac.
    O altă întrebare, 😉 în metodele get și post, deoarece returnez informații care nu sunt o pagină html, returnez informații așa cum sunt? ca un șir sau o listă sau orice tip de date. Clientul o aplicație în Android.

    1.    lajto el a spus

      Buna Ulises! Mă bucur atât de mult că testați wheezy.web: D.

      Despre ceea ce comentați, vă recomand cu tărie să nu vă montați propria structură. Cea care plimbă Andriy este destul de bună, așa că vă recomand să o urmați. În articol sunt două linkuri către blogul lui Andriy, unde explică pașii cu i18n și fără i18n. În cazul în care este puțin confuz, vă explic cum să faceți acest lucru fără i18n mai jos:

      Deschideți un terminal și executați aceste patru comenzi (înlocuiți „test-web” cu numele folderului pe care îl doriți pentru proiectul dvs.):

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

      dezarhivați quickstart-empty.zip

      mv quickstart-goal test-web

      rm quickstart-empty.zip

      Dacă doriți să utilizați PIL, modificați fișierul setup.py și decomentați codul corespunzător. După ce sunteți gata, rulați următoarele trei comenzi:

      web-test-cd

      face inv

      env / bin / easy_install uwsgi

      Serverul dvs. este deja montat. Dacă doriți să faceți un benchmark rapid pentru a vedea dacă funcționează, fiind în interiorul folderului, executați:

      faceți testul de referință pentru acoperirea nasului

      Vă recomand să mergeți la „etc / development.ini” și să schimbați „limit-as = 120” la „limit-as = 512”. Acesta este câți MB de RAM uWSGI vor „mânca”, deci ar putea fi crescut în viitor, dacă este necesar.

      În cele din urmă, de fiecare dată când doriți să vă deschideți serverul, ar fi suficient să vă localizați în folderul de proiect și să executați:

      face uwsgi

      La celelalte întrebări ... Implicit, serverul este programat să ruleze pe localhost. Dacă doriți să îl faceți public, deoarece îl aveți deja gata și doriți să-l utilizați pe un server fizic în producție, trebuie doar să deschideți „src / app.py” și să găsiți următoarele: make_server (", 8080, main). Primul parametru este un șir gol, nu? Ei bine, acolo puneți IP-ul serverului dvs. Al doilea parametru este portul pe care doriți să îl utilizați, care în mod implicit este 8080.

      În cele din urmă, ceea ce spuneți despre returnarea altceva decât HTML, desigur, puteți! În documentație, ele explică modul de returnare a tuturor: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Un salut! Orice mi-ai spune;).

      1.    Ulises el a spus

        Mulțumesc foarte mult Lajto, chiar mi-ai lămurit îndoielile, încercasem cu django, dar, așa cum ți-am spus, nu sunt inginer de sisteme și django cred că aduce mult mai mult decât îmi trebuia, folosește wheezy.web pentru a testa o aplicație în Android și să-l comunice cu un server. Ceva foarte simplu, dar destul de rapid și practic. Hei, încă o întrebare, recent am văzut că a existat o mare agitație cu http / 2, de unde știu la ce protocol funcționează wheezy.web? Pot să fac un server care utilizează http / 2 în wheezy.web? Sau recomandați o carte, un blog, un tutorial care se află în blocuri care pot explica întreaga problemă a rețelelor și a comunicațiilor. Multumesc din nou.

      2.    lajto el a spus

        Bună ziua Ulises ^^.

        HTTP / 2 este foarte recent și nu va fi adoptat serios timp de 1 an, așa că nu vă deranjați cu el :). Dacă doriți securitate, utilizați HTTPS și atât.

        Nu sunt sigur ce folosește Wheezy Web pentru HTTP, așa că presupun că va fi WSGI.

        Salutări!

  6.   lajto el a spus

    Apropo, un pic de nimic. Pe unele distribuții apare un mesaj de AVERTISMENT despre .python-eggs. Nimic nu se întâmplă dacă apare, dar dacă vi se pare deranjant, îl puteți elimina cu:

    chmod go = ~ / .python-eggs

    Salutări!

  7.   Diego el a spus

    Folosesc Django, dar voi verifica documentația pentru a vedea cum funcționează. Vă mulțumim pentru distribuire. Noroc

  8.   JD Villegas el a spus

    Poate fi folosit din windows !!!, există un tutorial ??

    Mulţumiri

  9.   lalita el a spus

    Bună, avem multă experiență cu Python. Mi se pare că vâslește contra curentului. Cel mai bun lucru inventat vreodată pentru această limbă este Django. Ei pot face statistici și pot consulta sute de programatori din întreaga lume, vă va oferi mai mult de 80%, majoritatea dintre ei nu greșesc. Dacă vâslesc sau înoată contra curentului, mai devreme sau mai târziu se vor îneca ...