[Programozás] A leggyorsabb Python webkeret: wheezy.web

wheezy_web_logo

zihálás.web nincs logója; A képet GIMP-ben készítettem.

Sokáig abbahagytam a programozást a Pythonban, de ez nem akadályoz meg abban, hogy megosszam veled az általam ismert technológiákat;). Valamivel ezelőtt belekerültem a "legjobb" Python webes keretrendszer keresésébe, mivel az általam használt (Web2Py) rohadt lassú volt. Kutatásom elvezetett zihálás.web; azok, akik ismerik, biztosan ezt tették a látványos benchmark, amelyet a szerző készített a blogján:

python-leggyorsabb-web-keretrendszer

Tudom, 25.000 XNUMX kérés másodpercenként a többi keretrendszerhez képest igazi passz. Használtam magam zihálás.web egy ideig, és azt kell mondanom, hogy ez egy igazi műalkotás. Bárhová is nézi: gyorsaság, egyszerűség, biztonság ... Minden. És fölötte egyetlen ember műve: Andriy Kornatskyy.

  • Működik együtt Python 2, Python 3 y pypy. Még akkor is, ha a 3 jobb teljesítményt nyújt, célszerű addig folytatni a 2 használatát, amíg a 3 nem lesz elég érett.
  • Kialakítása az moduláris, így zihálás.web több dolog: zihálás.sablon, sípoló.html, zihálás.biztonság… Használja a kívánt alkatrészeket.
  • Dokumentáció egyszerű és könnyen érthető.
  • Automatikus HTML optimalizálás (úgy tömöríti, hogy kevesebb eszközt vegyen igénybe külső eszközök használata nélkül).
  • Hogy lehetne másképp, van ingyenes szoftver és nyílt forráskódú ; D.
  • stb ...

Andriy blogján remek oktatóanyagok találhatók felszerel zihálás.web szárítani o i18n-vel (több nyelv); magyarázza is hogyan kell használni zihálás.web Nginxszel. Minden oktatóanyagának hátránya az tegyük fel, hogy a Debiant használja, mivel más disztrókon nem tesztelt.

Ha használja Fedora és érdekel zihálás.web, szerencsés vagy! Itt található a parancs, amely telepíti a szükséges csomagokat az oktatóanyagok követéséhez:

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

Az oktatóanyag, amelyet Andriy felajánl a telepítéséhez zihálás.web az Nginx-szel kifejezetten a Debian számára tervezett szkriptet használ, ezért saját magának kell megtennie, ha más rendszert használ. Esetemben az uWSGI elég nekem, ezért még soha nem próbáltam ki.

Az igazság az, hogy létezik zihálás.web Bűncselekménynek tartom egy másik keretrendszer használatát, ezért ha együtt dolgozol a Pythonnal, akkor legalább nézd meg! Az egyetlen tulajdonítható hátrány az, hogy nem tartalmaz semmilyen absztrakciós réteget az adatbázisokkal való munka megkönnyítésére (és nem is szükséges, de vannak, akik értékelik).

És ennyi. Rövid, de releváns cikk. Ígérem, hogy még több érdekes technológiát hozok! Viszlát ~.

Egyébként érdekesség, tudod miért hívják "zihálásnak"? Andriy rajong a Debianért. Ott hagyom;).


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   Bruno cascio dijo

    A teljesítmény nem az egyetlen tényező. Djangóval összehasonlítva elég olvashatatlan. És őszintén szólva, a másodpercenként 25000 kérést cselekvésben kell tekinteni, de én inkább 15000 (django) mellett maradok, hogy egészségesen írjak, a többi munka pedig az infrastruktúrára hárul, ami TÉNYLEG az, amelyik fog kapni vagy nem, 25000 kérés.

    Üdvözlettel! Köszönöm az adatokat 🙂

    1.    Bruno cascio dijo

      Mondanom sem kell, hogy összehasonlítási alapként más keretrendszerek régi verzióit használom ...

      1.    lajto dijo

        A referencia cikk 2012-ből származik. 2013-ban újra módosította és kibővítette, és ő maga is meghatározta, hogy azok abból az évből származnak: «A legújabb elérhető verziók az írás időpontjában (15. március 2013.)

    2.    lajto dijo

      Az általad említett olvashatatlanság szerintem nem olyan rossz. Megértem, hogy gyakran megkönnyítik a programozást, de szerintem nincsenek igazán jelentős különbségek. Egy évig használtam a Web2Py programot, és biztosíthatom Önöket, hogy ez az egyik legkönnyebben használható keretrendszer. Természetesen a teljesítménye sok szempontból szörnyű ... A referencia cikkben maga Massimo Di Pierro (a Web2Py készítője) vitázik Andriy-vel, amelyben végül elismeri, hogy még sok minden javítandó; Andriy-vel beszélgetve az IRC-n azt mondta nekem, hogy "széles körben elfogadott filozófia az, hogy mindent keretekbe helyezek, és funkciókkal duzzasztanak meg, még akkor is, ha a legtöbbet nem használják", és mennyire volt igaza ...

      Arról, amit az infrastruktúráról mond, részben megosztom, amit mond; 10.000 2 különbség SOK, főleg, ha a legnépszerűbb és legérettebb keretrendszerről beszélünk, szemben egy nagyon friss és kevéssé ismert kerettel. Az én megközelítésem mindig a maximális hatékonyság és a maximális termelékenység kombinálása, és azt hiszem, hogy a wheezy.web ezt teszi a legjobban. A Web2Py-t (a legtöbbet), a Django-t, a Pyramid-ot és a wheezy.web-et használtam, és biztosíthatom, hogy páratlan. Ha alkalmazkodik az ő cselekvési módjához, nem válik le róla. A Django egyetlen előnye a nagy közösség és a források, amelyek az egész interneten megtalálhatók; vagyis: könnyedség. A wheezy.web ehhez képest meglehetősen új, és nagyon kevesen tudnak róla; ha könnyen megy, akkor jobb a WebXNUMXPy vagy a Django xD.

      Nem akarok bővíteni, de amikor másodpercenkénti kérésekről beszélünk, akkor a párhuzamosságról beszélünk. Ha egyidejűséget keresnek, akkor a Python nem a megfelelő nyelv. Erre szolgálnak olyan nyelvek, mint az Erlang vagy a Haskell (és ha siet, Rust). De éppen ezért lenyűgöző, hogy a wheezy.web ilyen kevés kódot elfoglalva, mivel egy ember munkája a szabadidejében és egyéb tényezőkből áll, sikerült ilyen teljesítményt elérnie.

      Értem, mit mondasz az "egészséges írásról", de soha nem tudhatod, mennyit nőhet egy projekt hosszú távon. Hatékonyabb és párhuzamosabb, valamint egyszerű eszközökkel (fenntartom, hogy a wheezy.web egyszerű a teljesítményéhez) pénzt takaríthat meg, és hosszabb ideig készítheti el a projekt méretét a nyelv megváltoztatása nélkül. Végül minden abban a pénzben van, amit az embernek fizetnie kell a szerverének. Nagyon híres weboldalak vannak a PHP-ben, amikor a PHP szörnyű teljesítményű ... De hogyan oldja meg ezt a problémát? Jobb szerverek vásárlása. A másik megközelítéssel jobb programozással és erőforrások megtakarításával oldják meg: P.

      Sajnálom, hogy ennyire meghosszabbítottam magam. Nagyon könnyen rajongok az xDDD iránt. Üdvözlettel!

      1.    Bruno cascio dijo

        Tökéletesen megértettem, mire gondolsz, de pontosan az általad említettek miatt, ha egy projekt növekszik vagy sem, mivel zihálással megyünk, nincs adatbázis-réteg.

        Véleményem szerint a legjobb, ha nem veszel feleségül egyetlen nyelvet sem. Ha párhuzamosságra vágysz, használhatod a Node-ot is, motorja C-ben működik.

        Amit a teljesítményről megemlít, az nem csak a vertikális méretezés (a PHP esete), a Facebook például HHVM-et kínál, amelyet olvastam (nem teszteltem), amely 50% -kal javítja a teljesítményt, és ez nem szerverek vásárlása. Egyszerűen fogalmazva: a gyorsítótár-rétegek és / vagy az optimalizálás egyéb módjai nélküli PHP ugyanolyan "rossz", mint bármely más nyelv ez utóbbi nélkül, és rosszul értem, ha nevet adunk nekik, ez nem csak "jobb programozás".

        Egészségére! 🙂

      2.    lajto dijo

        Lássuk, ami nincs, az egy absztrakciós réteg. De a megfelelő könyvtárat vagy modult használja az adatbázissal való munkához, és azon kívül nincs több rejtély. A Web2Py absztrakciós réteg például nagyon egyszerű, de a teljesítmény drámaian csökken, mivel még optimalizált SQL-t sem tud írni. Minden Pythonban van; könnyű, de a teljesítményért cserébe.

        Ismerem a HHVM-et, és éppen ezért a PHP-hez hasonló nyelvek szörnyűek a modern időkben; ha a Facebook Haskellben vagy Erlangban lenne, nem lett volna szükség a HHVM létrehozására. Használjon gyorsítótárat, tömörítse az elküldött és fogadott fájlokat stb. minden fejlesztés nyilvánvaló szempontjai. A kérdés az, hogy az eszköznek fel kell mérnie :). És vannak olyan eszközök, amelyek nem biztosítják. A legjobb példa erre a JavaScript ... Ebben az esetben legalább vannak olyan csodák, mint a CoffeeScript, a Dart stb. amelyek JS-hez fordítanak.

        Üdvözlet!

      3.    Bruno cascio dijo

        Tökéletes! 🙂

        Csak egy dolog, facebook, ha haskellt használsz, pontosabban Haxl 🙂

      4.    Megszűnik dijo

        Nos, sokat használom a web2py-t, egyetértek abban, hogy ez nem a leggyorsabb keretrendszer, de ez a referenciaérték kissé helytelennek tűnik, még inkább, amikor 3 évvel ezelőtt beszélünk, a web2py hello dumb alkalmazása nagyon megterhelt más keretrendszerekhez, de őszintén szólva még nem tapasztaltam ezt a mélységes teljesítménybeli különbséget a web2py és a django alkalmazásom között.

        Egyébként a web2py-ben, ha SQL-t írhat a lekérdezések közvetlen végrehajtására.

        Üdvözlet.

  2.   urKh dijo

    A leggyorsabb webes keretrendszer, amelyet mond, de nem mutat be néhány példát és egyéb kulcsfontosságú tényezőt, például fejlesztést, termelékenységet, dokumentációt. Mivel a django létezik, nem tudom, miért tűnik bűncselekménynek, ha ezt nem használják: p

    1.    lajto dijo

      - A dokumentációban már vannak példák. A BitBucket oldalán szintén: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - A fejlődés és a termelékenység terén én személy szerint úgy gondolom, hogy az "egyszerűségben" való összefoglalás jó lehetőség. Melyek még az egyszerűbb és könnyebb keretek? Biztos. De nem ennyi teljesítménnyel.
      - A dokumentáció linkjét az xDDD cikkbe tettem.
      - Miért mondom, hogy bűncselekmény, az az oka, hogy úgy gondolom, hogy egy weboldalnak a lehető leghatékonyabbnak kell lennie, minden szempontból. Mint korábban említettük, vannak könnyebben használható keretrendszerek, de a wheezy.web használata sem C programozás. Csak jobban kell próbálkozni :).

      Üdvözlet ^^.

  3.   lajto dijo

    Egyébként arra az esetre, ha valaki lusta megtudni, és úgy gondolja, hogy a Wheezy Web csak másodpercenként nyer kérelmekben ... Íme még néhány referenciaérték:

    http://paste.desdelinux.net/5128 (a spamszűrője DesdeLinux Nem engedi, hogy ennyi linket tegyek)

    Elnézést kérek, hogy korábban nem vettem fel őket. Úgy gondoltam, hogy az egyik elég ahhoz, hogy felhívja a kíváncsiságot xD. Üdvözlettel!

  4.   fenriz dijo

    Eddig elégedett Djangóval.

    1.    agyag dijo

      Ehh, valahányszor elolvastam ezeket a dolgokat, mérges vagyok, azt hittem, hogy csak php keretrendszerekkel (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Ha Djangónak már van közössége (elég nagy), és kiváló keretrendszer, miért ne csatlakozzon a django csapatához ahelyett, hogy időt vesztegetne a kerék feltalálásához. @ Lajto a wheezy.web szerzőjével folytatott beszélgetésében, miért ne kérdezed tőle? Ha még soha nem gondolt arra, hogy csatlakozzon a django csapathoz, akkor a fenébe is.

      1.    lajto dijo

        Bár mindkettő webes keretrendszer, nagyon eltérő megközelítéssel rendelkeznek. A Django nehéz, sok kóddal rendelkezik, míg a wheezy.web könnyű, elkötelezett az egyszerűség és az optimalizálás mellett. Tudomásom szerint a wheezy.web az egyetlen igazán moduláris Python webkeret (vagyis az összes kódját különféle részekre osztja fel, amelyek függetlenül működhetnek). Sok olyan jellemzője van, amely megkülönbözteti a többitől.

        Miért nem csatlakozik Django-hoz, mondja? Mivel Django-t teljesen más megközelítésekkel tervezték. Hogyan alkalmazza a moduláris kialakítást a Django-ra? Gyakorlatilag a semmiből kellene átalakítani! Ugyanez sok más kérdéssel is.

        Megértem, hogy "jobb egy egységes keret, amely jól működik egy nagy közösséggel" érzés, de ez nem olyan egyszerű. Annak érdekében, hogy megértsétek, Django felületes társítással olyan, mintha Debian és wheezy.web lenne, mintha ... Arch? Gentoo? Ez határozottan rossz példa, de szerintem az xDDD megértett.

        Üdvözlet!

  5.   Ulises dijo

    Mit szólnál Lajto-hoz, hé, csinálok egy alkalmazást, és elolvastam a wheezy.web dokumentációt, és ez az első python web-keretrendszer, amelyet először megértettem 🙂 Látod, nincs sok ismeretem a hálózatokról és a webről, de különös vonzereje van a programozásnak.
    Tudna segíteni abban, hogyan lehet a hello világot módosítani, hogy nyilvános szerverré váljon? Talán nagyon buta kérdés, sajnálom, de a dokumentációban nem találom, hogyan kell csinálni.
    Egy másik kérdés: the a get és post módszerekben, mivel olyan információkat adok vissza, amelyek nem html oldalak, visszaadom az információkat? karakterláncként vagy listaként vagy bármilyen típusú adatként. A kliens egy alkalmazás androidban.

    1.    lajto dijo

      Szia Ulises! Nagyon örülök, hogy teszteled a zihálást.web: D.

      A hozzászólásokkal kapcsolatban nagyon ajánlom, hogy ne építse fel saját struktúráját. Andriy nagyon jó, így ajánlom, hogy kövesse. A cikkben két link található Andriy blogjára, ahol elmagyarázza az i18n és i18n nélküli lépéseket. Abban az esetben, ha kissé zavaros, az alábbiakban elmagyarázom, hogyan kell csinálni i18n nélkül:

      Nyissa meg a terminált, és futtassa ezt a négy parancsot (cserélje le a "test-web" szót a projektjének kívánt mappa nevére):

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

      kicsomagolja a quickstart-empty.zip fájlt

      mv gyorsindítás-üres teszt-web

      rm gyorsindítás-üres.zip

      Ha PIL-t szeretne használni, módosítsa a setup.py fájlt, és törölje a megfelelő kód törlését. Ha készen áll, futtassa a következő három parancsot:

      web-teszt-cd

      hogy env

      env / bin / easy_install uwsgi

      A szerver már csatlakoztatva van. Ha gyors összehasonlítást szeretne végezni, és ellenőrizze, hogy működik-e, akkor a mappában található:

      készítsen teszt orrfedél referenciaértéket

      Javaslom, hogy keresse fel az "etc / development.ini" oldalt, és változtassa meg a "limit-as = 120" -ot "limit-as = 512" -re. Ennyi MB RAM uWSGI lesz "felemésztve", így a jövőben szükség esetén növelhető.

      Végül, minden alkalommal, amikor meg akarja nyitni a szerverét, elegendő lenne megkeresnie a projekt mappáját, és végre kell hajtania:

      hogy uwsgi

      A többi kérdésre ... Alapértelmezés szerint a szerver úgy van programozva, hogy a localhoston fusson. Ha nyilvánosságra akarja hozni, mert már készen áll rá, és egy fizikai szerveren szeretné használni a gyártás során, nyissa meg az "src / app.py" fájlt, és keresse meg a következőket: make_server (", 8080, main). Az első paraméter egy üres karakterlánc, igaz? Nos, oda tedd a szervered IP-jét. A második paraméter a használni kívánt port, amely alapértelmezés szerint 8080.

      Végül, amit mondasz a HTML-től eltérő valami visszaküldéséről, természetesen megteheted! A dokumentációban elmagyarázzák, hogyan lehet mindent visszaküldeni: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Üdvözlet! Bármit mondasz nekem;).

      1.    Ulises dijo

        Köszönöm szépen Lajto, nagyon tisztáztad a kételyeimet, próbáltam már a djangóval, de ahogy mondtam neked, hogy nem vagyok rendszermérnök, és a django szerintem sokkal többet hoz, mint amire szükségem volt, használd a wheezy.web oldalt egy alkalmazás teszteléséhez android és kommunikálja azt egy szerverrel. Valami nagyon egyszerű, de meglehetősen gyors és praktikus. Hé, még egy kérdés, nemrégiben láttam, hogy nagy felhajtás van a http / 2-nél, honnan tudom, hogy a wheezy.web milyen protokollon működik? Készíthetek-e olyan szervert, amely a http / 2-et használja a wheezy.web-ben? Vagy ajánljon nekem egy könyvet, blogot, oktatóanyagot, amely tömbökben tartalmazza a hálózatok és a kommunikáció teljes kérdését. Köszönöm mégegyszer.

      2.    lajto dijo

        Üdv még egyszer Ulises ^^.

        A HTTP / 2 nagyon friss, és 1 évig nem fogadják el komolyan, ezért ne foglalkozz vele :). Ha biztonságot szeretne, használjon HTTPS-t, és ennyi.

        Nem vagyok biztos benne, hogy a Wheezy Web mit használ a HTTP-hez, ezért azt hiszem, ez WSGI lesz.

        Üdvözlet!

  6.   lajto dijo

    Egyébként egy kis valami a semmiből. Néhány terepen egy figyelmeztető üzenet jelenik meg a .python-egg fájlról. Semmi sem történik, ha megjelenik, de ha idegesítőnek találja, eltávolíthatja:

    chmod go = ~ / .python-egg

    Üdvözlet!

  7.   Diego dijo

    A Django-t használom, de megnézem a dokumentációt, hogy hogyan működik. Köszönet a megosztásért. Üdvözlettel

  8.   JD Villegas dijo

    Windowsból használható !!!, van-e tutorial ??

    Köszönöm

  9.   Lalitá dijo

    Szia, sok tapasztalatunk van a Pythonról. Számomra úgy tűnik, hogy az áramlással szemben eveznek. A legjobb dolog, amit valaha erre a nyelvre kitaláltak, a Django. Statisztikákat készíthetnek és több száz programozóval konzultálhatnak a világ minden tájáról, ez több mint 80% -ot fog adni, többségük nem téved. Ha az áramlás ellen eveznek vagy úsznak, előbb-utóbb megfulladnak ...