[Programiranje] Najhitrejši spletni okvir Python: wheezy.web

wheezy_web_logo

piskajoč.splet nima logotipa; Sliko sem naredil v GIMP.

Dolgo sem prenehal programirati v Pythonu, vendar mi to ne preprečuje, da bi tehnologije, ki jih poznam, delil z vami;). Pred časom sem začel iskati "najboljši" spletni okvir v Pythonu, saj je bil tisti, ki sem ga uporabil (Web2Py), prekleto počasen. Raziskave so me pripeljale do piskajoč.splet; tisti, ki ga poznajo, so to zagotovo storili prek spektakularno merilo avtorja na svojem blogu:

python-najhitrejši-spletni okvir

Vem, 25.000 prošenj na sekundo v primerjavi z ostalimi okviri je prava poteza. Uporabil sem se piskajoč.splet za nekaj časa in moram reči, da gre za pravo umetniško delo. Kamor koli ga pogledate: hitrost, preprostost, varnost ... Vse. In zgoraj je delo enega samega človeka: Andrija Kornatskega.

  • Deluje z Python 2, Python 3 y pypy. Tudi če 3 daje boljše rezultate, je priporočljivo, da z uporabo 2 nadaljujete, dokler 3 ni dovolj zrel.
  • Njegova zasnova je Modularna, tako da piskajoč.splet je več stvari: piskajoča.predloga, wheezy.html, piskajoča.varnost... Uporabite želene dele.
  • dokumentacijo enostavno in lahko razumljivo.
  • Samodejna optimizacija HTML (stisne ga tako, da ga brez uporabe zunanjih orodij zavzame manj).
  • Kako bi lahko bilo drugače, je brezplačna programska oprema in odprtokodna koda ; D.
  • itd ...

Na Andrijevem blogu najdete odlične vadnice za namestitev piskajoč.splet posušiti o z i18n (več jezikov); tudi pojasnjuje kako uporabiti piskajoč.splet z Nginxom. Slaba stran vseh njegovih vaj je ta predpostavimo, da uporabljate Debian, ker ni testiral na drugih distribucijskih sistemih.

Če uporabljate Fedora in vas zanima piskajoč.splet, ti si srečen! Tu je ukaz, ki bo namestil potrebne pakete, da boste lahko sledili njegovim vajam:

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

Vadnica, ki jo Andriy ponuja za namestitev piskajoč.splet z Nginxom uporabite skript, posebej zasnovan za Debian, zato boste morali to storiti sami, če uporabljate drug sistem. V mojem primeru mi uWSGI zadostuje, zato ga še nikoli nisem poskusil.

Resnica je, da obstoječe piskajoč.splet Uporaba drugega ogrodja se mi zdi kaznivo, zato, če delate s Pythonom, si ga vsaj oglejte! Edina pomanjkljivost, ki jo lahko pripišemo, je, da ne vsebuje nobenega sloja abstrakcije, ki bi olajšal delo z bazami podatkov (niti ni treba, vendar obstajajo ljudje, ki to cenijo).

In to je vse. Kratek, a ustrezen članek. Obljubim, da bom prinesel še zanimive tehnologije! Se vidimo ~.

Mimogrede, zanimivost, ali veste, zakaj se imenuje "piskanje"? Andriy je oboževalec Debiana. Pustim tam;).


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Bruno cascio je dejal

    Uspešnost ni edini dejavnik. V primerjavi z Django je precej neberljiv. In iskreno, 25000 prošenj na sekundo bi bilo treba videti v akciji, vendar raje ostajam pri 15000 (django) pisati zdravo, ostalo delo pa prenese na infrastrukturo, ki je RES tista, ki bo prejela oz. ne, 25000 zahtev.

    Na zdravje! Hvala za podatke 🙂

    1.    Bruno cascio je dejal

      Ni treba posebej poudarjati, da za primerjavo uporabljam stare različice drugih okvirov ...

      1.    lajto je dejal

        Primerjalni članek je iz leta 2012. V letu 2013 ga je spet spremenil in razširil, sam pa je navedel, da so iz tistega leta: «Zadnje razpoložljive različice od tega pisanja (15. marec 2013)»

    2.    lajto je dejal

      Nečitljivost, ki jo omenjate, mislim, da ni tako slaba. Razumem, da se pogosto išče enostavnost programiranja, vendar mislim, da v resnici ni bistvenih razlik. Leto dni sem uporabljal Web2Py in zagotavljam vam, da je eden najlažjih okvirjev, ki so na voljo. Seveda je njegova uspešnost v marsičem grozna ... V primerjalnem članku ima Massimo Di Pierro (ustvarjalec Web2Py) debato z Andrijem, v kateri na koncu prizna, da je treba še veliko izboljšati; Ko je govoril z Andriyem na IRC, mi je povedal, "obstaja splošno sprejeta filozofija, da se vse postavi v okvire in napihne s funkcijami, čeprav se večina ne uporablja", in kako prav je imel ...

      Glede tega, kar pravite o infrastrukturi, delno delim vaše mnenje; 10.000 razlike je VELIKO, še posebej, če govorimo o najbolj priljubljenem in zrelem okviru v primerjavi z zelo nedavnim in malo znanim. Moj pristop je vedno združiti največjo učinkovitost z največjo storilnostjo, in mislim, da to najbolje dela wheezy.web. Uporabil sem Web2Py (najbolj), Django, Pyramid in wheezy.web, in zagotavljam vam, da mu ni para. Ko se enkrat prilagodiš njegovemu načinu početja, se od njega ne odlepiš. Edine prednosti Djanga so velika skupnost, ki jo ima, in viri po vsem internetu; se pravi: lahkotnost. wheezy.web je v primerjavi s tem dokaj nov in le malo ljudi ve zanj; če greš enostavno, bolje Web2Py ali Django xD.

      Ne želim razširiti, toda ko govorimo o zahtevah na sekundo, govorimo o sočasnosti. Če se išče sočasnost, Python ni ustrezen jezik. Temu so namenjeni drugi jeziki, kot sta Erlang ali Haskell (in če me pohitite, Rust). Toda ravno zato je impresivno, da je wheezy.web, ki zaseda tako malo kode, ki je delo osebe v prostem času in zaradi drugih dejavnikov, uspel doseči takšno uspešnost.

      Razumem, kaj pravite o "zdravem pisanju", vendar nikoli ne veste, koliko lahko projekt dolgoročno zraste. Z uporabo bolj učinkovitih in sočasnih orodij, pa tudi preprostih (trdim, da je wheezy.web preprost glede na svojo zmogljivost) prihranite denar in projektno lestvico naredite dlje, ne da bi spremenili jezik. Na koncu je vse v denarju, ki ga morate plačati za svoj strežnik. V PHP obstajajo zelo znana spletna mesta, ko je PHP grozno zmogljiv ... Toda kako rešiti to težavo? Nakup boljših strežnikov. Z drugim pristopom se to reši z boljšim programiranjem in prihrankom virov: P.

      Žal mi je, da sem se tako podaljšal. Zelo sem navdušen nad xDDD. Na zdravje!

      1.    Bruno cascio je dejal

        Popolnoma sem razumel, kaj mislite, vendar ravno zaradi tega, kar omenjate, če projekt raste ali ne, saj gremo s piskanjem, da ni baze podatkov.

        Po mojem mnenju je najbolje, da se ne poročimo z nobenim jezikom. Če želite sočasnost, lahko uporabite tudi Node, njegov motor deluje v C.

        Kar omenjate pri zmogljivosti, ni le vertikalno skaliranje (primer PHP), Facebook na primer ponuja HHVM, ki sem ga prebral (ni preizkušen), da izboljša zmogljivost za 50% in to ni nakup strežnikov. Navaden PHP brez slojev predpomnilnika in / ali drugih načinov za optimizacijo je tako "slab" kot kateri koli drug jezik brez slednjega, zato mislim, da jim je treba dati ime, ni le "boljša koda".

        Lep pozdrav! 🙂

      2.    lajto je dejal

        Poglejmo, kaj ni, je plast abstrakcije. Toda za delo z bazo podatkov in zunaj uporabljate ustrezno knjižnico ali modul, skrivnosti ni več. Plast abstrakcije Web2Py je na primer zelo preprosta, vendar se zmogljivost močno zmanjša, saj niti optimiziranega SQL ne morete pisati. Vse je v Pythonu; enostavno, a v zameno za zmogljivost.

        Poznam HHVM in prav zato so jeziki, kot je PHP, za današnji čas grozni; če bi bil Facebook v Haskellu ali Erlangu, ne bi bilo treba ustvarjati HHVM. Uporabite predpomnilnik, stisnite poslane in prejete datoteke itd. so očitni vidiki vsakega razvoja. Vprašanje je, da mora orodje meriti :). In obstajajo orodja, ki tega ne dajo. Najboljši primer tega je JavaScript ... V tem primeru obstajajo vsaj čudeži, kot so CoffeeScript, Dart itd. ki se prevedejo v JS.

        Pozdravljeni!

      3.    Bruno cascio je dejal

        Odlično! 🙂

        Samo ena stvar, facebook, če uporabljate haskell, natančneje Haxl 🙂

      4.    Nehajte je dejal

        No, veliko uporabljam web2py, strinjam se, da ni najhitrejši okvir, toda zdi se, da je to merilo nekoliko neumestno, še bolj, če govorimo o pred tremi leti, je zdrava neumna aplikacija web3py zelo naložen v primerjavi z drugimi ogrodji, toda iskreno nisem doživel tiste strašne razlike v zmogljivosti med svojimi aplikacijami, napisanimi v web2py in django.

        Mimogrede, v web2py lahko pišete SQL za neposredno izvajanje poizvedb.

        Lep pozdrav.

  2.   urKh je dejal

    Najhitrejši spletni okvir, ki ga izgovorite, vendar ne prikazujete nobenega primera in drugih ključnih dejavnikov, kot so razvoj, produktivnost, dokumentacija. Ker django obstaja, ne vem, zakaj se zdi, da tega ne uporabljamo: str

    1.    lajto je dejal

      - V dokumentaciji so že primeri. Na njegovi strani BitBucket tudi: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Glede razvoja in produktivnosti menim, da je strnitev v "preprostosti" dobra možnost. Kaj so enostavnejši in lažji okviri? Jasno. A ne s tako veliko zmogljivostjo.
      - Povezavo do dokumentacije sem dal v članek xDDD.
      - Zakaj pravim, da je to kaznivo dejanje, je to, ker verjamem, da bi morala biti spletna stran v vseh pogledih čim bolj učinkovita. Kot sem že omenil, obstajajo okviri, ki so enostavnejši za uporabo, vendar uporaba wheezy.web tudi ni programiranje C. Samo bolj se morate potruditi :).

      Lep pozdrav ^^.

  3.   lajto je dejal

    Mimogrede, v primeru, da bi kdo leno izvedel in mislil, da Wheezy Web zmaga le v zahtevah na sekundo ... Tu je še nekaj meril:

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

    Opravičujem se, ker jih prej nisem vključil. Mislil sem, da je ena dovolj, da vzbudi radovednost xD. Na zdravje!

  4.   fenriz je dejal

    Zaenkrat zadovoljen z Djangom.

    1.    oclay je dejal

      Eh, vsakič, ko preberem te stvari, me razjezi, mislil sem, da gre le za ogrodja php (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Če Django že ima skupnost (precej veliko) in je odličen okvir, zakaj se namesto da bi zapravljali čas za ponovno izumljanje kolesa, ne pridružite ekipi django. @ Lajto v pogovoru z avtorjem wheezy.web, zakaj ga ne vprašate, če še nikoli nisi razmišljal, da bi se pridružil ekipi django, hudiča. Na zdravje ...

      1.    lajto je dejal

        Čeprav sta oba spletna okvira, imata zelo različna pristopa. Django je težak, ima veliko kode, medtem ko je wheezy.web lahek in se zavzema za preprostost in optimizacijo. Kolikor vem, je wheezy.web edini zares modularni spletni okvir Python (to pomeni, da razdeli vso vašo kodo na različne dele, ki lahko delujejo neodvisno). Ima številne značilnosti, po katerih se razlikuje od ostalih.

        Zakaj se ne bi pridružili Djangu, pravite? Ker je bil Django zasnovan s povsem drugačnimi pristopi. Kako na Django uporabim modularno zasnovo? Predelati bi ga morali tako rekoč iz nič! Enako pri številnih drugih vprašanjih.

        Imam občutek, da je "boljši en sam okvir, ki dobro deluje z veliko skupnostjo", vendar to ni tako enostavno. Torej razumete, s površnim povezovanjem je Django kot da bi bil Debian in wheezy.web, kot da bi bil ... Arch? Gentoo? Vsekakor je slab primer, vendar mislim, da xDDD razumemo.

        Pozdravljeni!

  5.   Ulises je dejal

    Kaj pa Lajto, hej, delam aplikacijo in sem prebral dokumentacijo wheezy.web in to je prvi python spletni okvir, ki sem ga razumel prvič. Vidite, nimam veliko znanja o omrežjih in spletu, ampak Programiranje me še posebej privlači.
    Bi mi lahko pomagali, kako spremeniti zdravo svet, da postane javni strežnik? Mogoče je zelo neumno vprašanje, žal, vendar v dokumentaciji ne najdem, kako to storiti.
    Drugo vprašanje, 😉 v metodah get in post, ko vrnem informacije, ki niso html strani, ali vrnem informacije takšne, kot so? kot niz ali seznam ali katero koli vrsto podatkov. Stranka aplikacija v androidu.

    1.    lajto je dejal

      Pozdravljeni Ulises! Tako sem vesela, da preizkušate wheezy.web: D.

      Glede tega, kar komentirate, toplo priporočam, da ne montirate lastne strukture. Tista, ki jo vozi Andriy, je kar dobra, zato priporočam, da jo spremljate. V članku sta dve povezavi do Andrijevega bloga, kjer razlaga korake z i18n in brez i18n. V primeru, da je nekoliko zmedeno, bom spodaj razložil, kako to storiti brez i18n:

      Odprite terminal in zaženite te štiri ukaze ("test-web" zamenjajte z imenom mape, ki jo želite za svoj projekt):

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

      razpakirajte quickstart-empty.zip

      mv quickstart-empty test-web

      rm quickstart-empty.zip

      Če želite uporabiti PIL, spremenite datoteko setup.py in razkomentirajte ustrezno kodo. Ko ste pripravljeni, zaženite naslednje tri ukaze:

      web-test-cd

      narediti env

      env / bin / easy_install uwsgi

      Vaš strežnik je že nameščen. Če želite narediti hitro primerjalno preizkus, da vidite, ali deluje, ko ste v mapi, zaženete:

      naredite testno merilo za nos

      Priporočam, da obiščete "etc / development.ini" in spremenite "limit-as = 120" na "limit-as = 512". Toliko MB RAM-a bo "požrl" uWSGI, zato bi ga po potrebi lahko v prihodnosti povečali.

      Končno, vsakič, ko želite odpreti strežnik, bi bilo dovolj, da se poiščite v mapi projekta in izvedete:

      narediti uwsgi

      Pri drugih vprašanjih ... Strežnik je privzeto programiran za zagon na localhost. Če ga želite objaviti, ker ga že imate pripravljenega in ga želite uporabiti na fizičnem strežniku v produkciji, preprosto odprite "src / app.py" in poiščite naslednje: make_server (", 8080, main). Prvi parameter je prazen niz, kajne? No, tam vstavite IP vašega strežnika. Drugi parameter so vrata, ki jih želite uporabiti, ki so privzeto 8080.

      Končno, kar rečete o vrnitvi nečesa drugega kot HTML, seveda lahko! V dokumentaciji pojasnijo, kako vse vrniti: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Pozdrav! Karkoli mi poveš;).

      1.    Ulises je dejal

        Najlepša hvala Lajto, res si razjasnil moje dvome, poskusil sem z django, ampak kot sem ti rekel, nisem sistemski inženir in django mislim, da prinaša veliko več, kot sem potreboval, uporabi wheezy.web za preizkus aplikacije v androidu in jo komunicirajte s strežnikom. Nekaj ​​zelo preprostega, a precej hitrega in praktičnega. Hej še eno vprašanje, pred kratkim sem videl, da je pri http / 2 prišlo do velike težave, kako naj vem, na katerem protokolu deluje wheezy.web? Ali lahko naredim strežnik, ki uporablja http / 2 v wheezy.web? Ali pa mi priporočite knjigo, blog, vadnico, ki je v blokih, ki lahko razložijo celotno zadevo omrežij in komunikacij. Hvala še enkrat.

      2.    lajto je dejal

        Pozdravljeni še enkrat Ulises ^^.

        HTTP / 2 je zelo nov in ga še 1 leto ne bodo resno sprejeli, zato se z njim ne obremenjujte :). Če želite varnost, uporabite HTTPS in to je to.

        Nisem prepričan, kaj Wheezy Web uporablja za HTTP, zato predvidevam, da bo WSGI.

        Lep pozdrav!

  6.   lajto je dejal

    Mimogrede, nekaj malega iz nič. Na nekaterih distribucijskih sistemih se prikaže OPOZORILO o .python-egg. Če se pojavi, se nič ne zgodi, če pa se vam zdi nadležno, ga lahko odstranite z:

    chmod go = ~ / .python-jajca

    Pozdravljeni!

  7.   Diego je dejal

    Uporabljam Django, vendar bom preveril dokumentacijo, da vidim, kako deluje. Hvala za deljenje. Na zdravje

  8.   JD Villegas je dejal

    Uporablja se lahko iz oken !!!, ali obstaja vadnica ??

    hvala

  9.   lalita je dejal

    Živjo, s Pythonom imamo veliko izkušenj. Zdi se mi, da veslajo proti toku. Najboljša stvar, ki so jo kdaj izumili za ta jezik, je Django. Lahko sestavijo statistične podatke in se posvetujejo s stotimi programerji z vsega sveta, dalo vam bo več kot 80%, večina se ne moti. Če bodo veslali ali plavali proti toku, se bodo prej ali slej utopili ...