[Ohjelmointi] Nopein Python-verkkokehys: wheezy.web

whezy_web_logo

hengityksen vinkuminen sillä ei ole logoa; Tein kuvan GIMP: ssä.

Pitkään lopetin ohjelmoinnin Pythonissa, mutta se ei estä minua jakamasta tuntemiani tekniikoita kanssasi;). Jokin aika sitten pääsin etsimään "parasta" verkkokehystä Pythonissa, koska käyttämäni (Web2Py) oli pirun hidas. Tutkimukseni johti minut hengityksen vinkuminen; ne, jotka tuntevat hänet, ovat varmasti tehneet niin kirjoittajan blogissaan tekemä upea vertailuarvo:

python-nopein-web-kehys

Tiedän, 25.000 pyyntöä sekunnissa verrattuna muihin kehyksiin se on todellinen läpäisy. Itse käytin hengityksen vinkuminen hetkeksi ja minun on sanottava, että se on todellinen taideteos. Minne sitä katsotkin: nopeus, yksinkertaisuus, turvallisuus ... Kaikki. Ja sen yläpuolella on yhden ihmisen työ: Andriy Kornatskyy.

  • Se toimii Python 2, Python 3 y pypy. Vaikka 3 antaa paremman suorituskyvyn, on suositeltavaa jatkaa 2: n käyttöä, kunnes 3 on riittävän kypsä.
  • Sen muotoilu on modulaarinen, niin hengityksen vinkuminen ovat enemmän asioita: vinkuva. malli, vinkuva.html, hengityksen vinkuminen. turvallisuus… Käytä haluamiasi osia.
  • dokumentointi yksinkertainen ja helppo ymmärtää.
  • Automaattinen HTML-optimointi (pakkaa sen niin, että se vie vähemmän ilman ulkoisia työkaluja).
  • Kuinka voisi olla toisin, se on ilmainen ohjelmisto ja avoimen lähdekoodin ; D.
  • jne ...

Andriyn blogissa on upeita opetusohjelmia asentaa hengityksen vinkuminen kuivata o i18n: n kanssa (useita kieliä); myös selittää kuinka käyttää hengityksen vinkuminen Nginxin kanssa. Kaikkien hänen opetusohjelmiensa haittapuoli on se oletetaan, että käytät Debiania, koska hän ei ole testannut muita distroja.

Jos käytät Fedora ja olet kiinnostunut hengityksen vinkuminen, olet onnekas! Tässä on komento, joka asentaa tarvittavat paketit voidakseen seurata sen opetusohjelmia:

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

Opetusohjelma, jonka Andriy tarjoaa asentaa hengityksen vinkuminen Nginxin kanssa se käyttää nimenomaan Debianille suunniteltua komentosarjaa, joten sinun on tehtävä se itse, jos käytät eri järjestelmää. Minun tapauksessani uWSGI riittää minulle, joten en ole koskaan kokeillut sitä.

Totuus on, että olemassa hengityksen vinkuminen Minusta on rikos käyttää toista kehystä, joten jos työskentelet Pythonin kanssa, katsokaa sitä ainakin! Ainoa siihen liittyvä haitta on, että se ei tuo mitään abstraktiokerrosta helpottamaan työtä tietokantojen kanssa (eikä sen tarvitse, mutta on ihmisiä, jotka arvostavat sitä).

Ja siinä kaikki. Lyhyt, mutta asiaankuuluva artikkeli. Lupaan tuoda lisää mielenkiintoisia tekniikoita! Nähdään ~.

Muuten uteliaisuus, tiedätkö, miksi sitä kutsutaan "hengityksen vinkumiseksi"? Andriy on Debianin fani. Jätän sen sinne;).


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   Bruno cascio dijo

    Suorituskyky ei ole ainoa tekijä. Djangoon verrattuna se on melko lukukelvoton. Ja rehellisesti, 25000 pyyntöä sekunnissa pitäisi nähdä toiminnassa, mutta mieluummin pysyn 15000 (django) kanssa kirjoittamaan terveellisesti, ja loput työstä siirretään infrastruktuurille, joka on TODELLA se, joka vastaanottaa tai ei, 25000 pyyntöä.

    Kippis! Kiitos tiedoista 🙂

    1.    Bruno cascio dijo

      Tarpeetonta sanoa, että vertailuun käytän muiden kehysten vanhoja versioita ...

      1.    lajto dijo

        Vertailuartikkeli on vuodelta 2012. Hän muutti ja laajensi sitä uudelleen vuonna 2013 ja itse ilmoitti, että ne ovat kyseisestä vuodesta: «Uusimmat saatavilla olevat versiot tämän kirjoituksen jälkeen (15. maaliskuuta 2013)»

    2.    lajto dijo

      Mainitsemasi luettavuus ei mielestäni ole niin huono. Ymmärrän, että ohjelmoinnin helppoutta haetaan usein, mutta en usko, että siinä on todella merkittäviä eroja. Käytin Web2Pyä vuoden ajan, ja vakuutan teille, että se on yksi helpoimmin käytettävissä olevista kehyksistä. Tietenkin sen suorituskyky on monella tapaa kauhea ... Vertailuartikkelissa Massimo Di Pierro itse (Web2Pyn luoja) käy keskustelua Andriyn kanssa, jossa hän lopulta myöntää, että parannettavaa on paljon; puhuessaan Andriyn kanssa IRC: ssä, hän kertoi minulle "on yleisesti hyväksytty filosofia, että kaikki asetetaan kehyksiin ja turvotetaan niihin ominaisuuksilla, vaikka suurinta osaa ei käytetä", ja kuinka oikeassa hän oli ...

      Siitä, mitä sanot infrastruktuurista, jaan osittain sen, mitä sanot; 10.000 ero on PALJON, varsinkin kun puhumme suosituimmista ja kypsästä kehyksestä verrattuna hyvin uusimpaan ja vähän tunnettuun. Lähestymistapani on aina yhdistää maksimaalinen hyötysuhde maksimaaliseen tuottavuuteen, ja mielestäni wheezy.web tekee sen parhaiten. Olen käyttänyt Web2Py (eniten), Django, Pyramid ja wheezy.web ja vakuutan teille, että se on vertaansa vailla. Kun olet sopeutunut hänen tapaansa tehdä asioita, et irtoa hänestä. Djangon ainoat edut ovat suuri yhteisö ja resurssit, jotka ovat kaikkialla Internetissä. toisin sanoen: helppous. wheezy.web on verrattain uusi, ja hyvin harvat ihmiset tietävät siitä; jos et mene helposti, parempi Web2Py tai Django xD.

      En halua laajentaa, mutta puhuessamme pyyntöjä sekunnissa puhumme samanaikaisuudesta. Jos haetaan samanaikaisuutta, Python ei ole sopiva kieli. Tätä varten muut kielet, kuten Erlang tai Haskell, ovat (ja jos kiirehdit minua, Rust). Mutta juuri tästä syystä on vaikuttavaa, että wheezy.web, joka vie niin vähän koodia, on henkilön työ vapaa-ajallaan ja joukko muita tekijöitä, on onnistunut saavuttamaan tällaisen suorituskyvyn.

      Ymmärrän, mitä sanot "terveellisestä kirjoittamisesta", mutta et koskaan tiedä, kuinka paljon projekti voi kasvaa pitkällä aikavälillä. Säästää rahaa ja tekee projektimittakaavasta pidempään käyttämättä tehokkaampia ja samanaikaisia ​​työkaluja sekä yksinkertaisia ​​(väitän, että wheezy.web on yksinkertainen sen suorituskyvyn kannalta), kieltä vaihtamatta. Loppujen lopuksi kaikki on rahoissa, jotka sinun on maksettava palvelimestasi. PHP: ssä on hyvin tunnettuja verkkosivustoja, kun PHP on kauhean suorituskyvyn oma ... Mutta miten ratkaiset ongelman? Parempien palvelimien ostaminen. Toisella lähestymistavalla se ratkaistaan ​​ohjelmoimalla paremmin ja säästämällä resursseja: P.

      Olen pahoillani, että olen laajentanut itseäni niin paljon. Olen erittäin intohimoinen xDDD: stä. Kippis!

      1.    Bruno cascio dijo

        Ymmärsin täydellisesti, mitä tarkoitat, mutta juuri sen vuoksi, mitä mainitset, jos projektilla on taipumusta kasvaa tai ei, koska meillä on vinkumista, tietokantakerrosta ei ole.

        Mielestäni on parasta olla menemättä naimisiin minkään kielen kanssa. Jos haluat samanaikaisuuden, voit käyttää myös solmua, joka toimii C: ssä.

        Mitä mainitset suorituskyvystä, ei ole pelkästään vertikaalinen skaalaus (PHP: n tapaus), esimerkiksi Facebook tarjoaa HHVM: n, jonka olen lukenut (ei testattu), joka parantaa suorituskykyä 50%, eikä tämä ole palvelinten ostaminen. Tavallinen PHP ilman välimuistikerroksia ja / tai muita tapoja optimoida on yhtä "huono" kuin mikä tahansa muu kieli ilman jälkimmäistä, ja tarkoitan huonoa antaa heille nimi, se ei ole vain "parempi koodi".

        Kippis! 🙂

      2.    lajto dijo

        Katsotaanpa, mitä ei ole, on abstraktiokerros. Mutta käytät vastaavaa kirjastoa tai moduulia työskennellessäsi tietokannan kanssa ja sen ulkopuolella, ei enää ole mysteeriä. Esimerkiksi Web2Py-abstraktikerros on hyvin yksinkertainen, mutta suorituskyky heikkenee dramaattisesti, koska et voi edes kirjoittaa optimoitua SQL: ää. Kaikki on Pythonissa; helppo, mutta vastineeksi suorituskyvystä.

        Tunnen HHVM: n, ja juuri siksi PHP: n kaltaiset kielet ovat kauheita nykyaikaan; Jos Facebook olisi Haskellissa tai Erlangissa, ei olisi ollut tarpeen luoda HHVM: ää. Käytä välimuistia, pakkaa lähetetyt ja vastaanotetut tiedostot jne. ne ovat ilmeisiä näkökohtia kehitykselle. Asia on, että työkalun on mitattava :). Ja on työkaluja, jotka eivät anna sitä. Paras esimerkki tästä on JavaScript ... Siinä tapauksessa ainakin on olemassa ihmeitä, kuten CoffeeScript, Dart jne. jotka kääntyvät JS: lle.

        Tervehdys!

      3.    Bruno cascio dijo

        Täydellinen! 🙂

        Vain yksi asia, facebook, jos käytät haskellia, tarkemmin Haxl 🙂

      4.    Lopettaa dijo

        No, käytän web2py: tä paljon, olen samaa mieltä siitä, että se ei ole nopein kehys, mutta kyseinen vertailuarvo näyttää olevan hieman väärä, vielä enemmän kun puhumme 3 vuotta sitten, hei tyhmä web2py-sovellus on hyvin ladattu verrattuna muihin kehyksiin, mutta en rehellisesti ole kokenut sitä kauheaa eroa suorituskyvyssä web2py: ssä ja djangossa kirjoitettujen sovellusten välillä.

        Muuten, web2py: ssä, jos voit kirjoittaa SQL: n suorittamaan kyselyt suoraan.

        Tervehdys.

  2.   urKh dijo

    Nopein verkkokehys, jonka sanot, mutta et näytä mitään esimerkkejä ja muita avaintekijöitä, kuten kehitys, tuottavuus, dokumentaatio. Kun django on olemassa, en tiedä miksi näyttää olevan rikos olla käyttämättä tätä: s

    1.    lajto dijo

      - Asiakirjoissa on jo esimerkkejä. Hänen BitBucket-sivullaan myös: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Kehityksen ja tuottavuuden osalta olen sitä mieltä, että sen yhteenveto "yksinkertaisuutena" on hyvä vaihtoehto. Mitkä ovat vielä yksinkertaisemmat ja helpommat kehykset? Asia selvä. Mutta ei niin paljon suorituskykyä.
      - Olen lisännyt linkin dokumentaatioon artikkeliin xDDD.
      - Miksi sanon, että se on rikos, johtuu siitä, että uskon, että verkkosivun on oltava mahdollisimman tehokas kaikin tavoin. Kuten aiemmin mainitsin, on olemassa kehyksiä, joita on helpompi käyttää, mutta wheezy.web ei myöskään ole C-ohjelmointi. Sinun tarvitsee vain yrittää kovemmin :).

      Terveisiä ^^.

  3.   lajto dijo

    Muuten, jos joku on laiska selville ja ajattelee, että Wheezy Web voittaa vain pyynnöissä sekunnissa ... Tässä on muutama vertailuarvo:

    http://paste.desdelinux.net/5128 (roskapostisuodatin DesdeLinux Se ei anna minun laittaa niin paljon linkkejä)

    Pahoittelen, etten ole sisällyttänyt niitä aiemmin. Luulin, että yksi riitti vetämään uteliaisuutta xD. Kippis!

  4.   fenriz dijo

    Toistaiseksi tyytyväinen Djangoon.

    1.    savea dijo

      Ehh joka kerta kun luin nämä asiat, se suututtaa minua, ajattelin, että se oli vain php-kehysten kanssa (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Jos Djangolla on jo yhteisö (melko suuri) ja se on erinomainen kehys, miksi älä liity django-tiimiin sen sijaan, että tuhlata aikaa pyörän keksimisessä. @ Lajto keskustelussasi wheezy.web-sivuston kirjoittajan kanssa, miksi et kysy häneltä et ole koskaan ajatellut liittyä django-joukkueeseen, hitto se.

      1.    lajto dijo

        Vaikka molemmat ovat verkkokehyksiä, niillä on hyvin erilaiset lähestymistavat. Django on raskas, sillä on paljon koodia, kun taas wheezy.web on kevyt, se on sitoutunut yksinkertaisuuteen ja optimointiin. Tietojeni mukaan wheezy.web on ainoa todella modulaarinen Python-verkkokehys (eli se jakaa kaikki koodinsa eri osiin, jotka voivat toimia itsenäisesti). Sillä on monia ominaisuuksia, jotka erottavat sen muista.

        Mikset liittyisi Djangoon, sanot? Koska Django on suunniteltu täysin erilaisilla lähestymistavoilla. Kuinka sovellat modulaarista rakennetta Djangoon? Se olisi uusittava käytännössä tyhjästä! Sama monien muiden asioiden kanssa.

        Saan sen "paremman yhden kehyksen, joka toimii hyvin suuren yhteisön kanssa" tunteen, mutta se ei ole niin helppoa. Joten ymmärrät, tekemällä pinnallinen yhdistys, Django on kuin Debian ja wheezy.web, ikään kuin se olisi ... Arch? Gentoo? Se on ehdottomasti huono esimerkki, mutta mielestäni xDDD ymmärretään.

        Tervehdys!

  5.   Ulises dijo

    Entä Lajto, hei, teen sovellusta ja luin wheezy.web-ohjeet, ja se on ensimmäinen python-verkkokehys, jonka ymmärsin ensimmäistä kertaa 🙂 Näet, minulla ei ole paljon tietoa verkoista ja verkosta, mutta Minulla on erityinen vetovoima ohjelmoinnille.
    Voisitko auttaa minua muokkaamaan hei-maailmaa tekemään siitä julkisen palvelimen? Ehkä se on hyvin typerä kysymys, anteeksi, mutta en löydä dokumentaatiosta miten se tehdään.
    Toinen kysymys, 😉 get and post -menetelmissä, kun palautan tietoja, jotka eivät ole html-sivuja, palautanko tiedot sellaisenaan? merkkijonona tai luettelona tai minkä tahansa tyyppisenä datana. Asiakas sovellus Androidissa.

    1.    lajto dijo

      Hei Ulises! Olen niin iloinen, että testaat hengityksen vinkunaa.

      Mitä kommentoit, suosittelen, ettet asenna omaa rakennettasi. Andriyn ratsastama on aika hyvä, joten suosittelen, että noudatat sitä. Artikkelissa on kaksi linkkiä Andriyn blogiin, jossa hän selittää vaiheet i18n: n kanssa ja ilman i18n: tä. Jos se on hieman hämmentävää, selitän, miten se tehdään ilman i18n: tä alla:

      Avaa pääte ja suorita nämä neljä komentoa (korvaa "test-web" projektille haluamasi kansion nimellä):

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

      pura quickstart-empty.zip

      mv quickstart-empty test-web

      rm quickstart-empty.zip

      Jos haluat käyttää PIL: ää, muokkaa setup.py-tiedostoa ja poista vastaavan koodin komento. Kun olet valmis, suorita seuraavat kolme komentoa:

      web-testi-cd

      tehdä env

      env / bin / easy_install uwsgi

      Palvelimesi on jo asennettu. Jos haluat tehdä nopean vertailuarvon ja tarkistaa, toimiiko se, olet kansiossa, suoritat:

      tee nenäkannen testivertailu

      Suosittelen, että siirryt "etc / development.ini" -sivulle ja vaihdat "limit-as = 120" arvoon "limit-as = 512". Näin monta Mt RAM-muistia uWSGI "syö", joten sitä voidaan tarvittaessa lisätä myöhemmin.

      Lopuksi joka kerta, kun haluat avata palvelimesi, riittää, että löydät itsesi projektikansioon ja suoritat:

      tee uwsgi

      Muista kysymyksistä ... Oletuksena palvelin on ohjelmoitu toimimaan localhostilla. Jos haluat tehdä siitä julkisen, koska sinulla on se jo valmiina ja haluat käyttää sitä fyysisessä palvelimessa tuotannossa, avaa vain "src / app.py" ja etsi seuraava: make_server (", 8080, main). Ensimmäinen parametri on tyhjä merkkijono, eikö? No, sinne laitat palvelimesi IP-osoitteen. Toinen parametri on portti, jota haluat käyttää, joka on oletusarvoisesti 8080.

      Lopuksi, mitä sanot palauttamisesta jotain muuta kuin HTML, tietysti voit! Asiakirjoissa he selittävät, kuinka kaikki palautetaan: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Tervehdys! Kaikki mitä kerrot minulle;).

      1.    Ulises dijo

        Paljon kiitoksia Lajto, selvitit todella epäilyt, olin kokeillut djangon kanssa, mutta kuten mainitsin sinulle, en ole systeeminsinööri ja django mielestäni tuo paljon enemmän kuin mitä tarvitsin, testaa sovellus androidissa ja kommunikoi se palvelimen kanssa käyttämällä wheezy.web-sivustoa . Jotain hyvin yksinkertaista, mutta melko nopeaa ja käytännöllistä. Hei vielä yksi kysymys, äskettäin huomasin, että http / 2: n kanssa käytiin paljon, mistä tiedän, missä protokollassa wheezy.web toimii? Voinko tehdä palvelimen, joka käyttää http / 2: ta wheezy.webissä? Tai suosittele minulle lohkoina olevaa kirjaa, blogia tai opetusohjelmaa, joka selittää koko verkon ja viestinnän. Kiitos taas.

      2.    lajto dijo

        Hei taas Ulises ^^.

        HTTP / 2 on hyvin äskettäinen eikä sitä oteta vakavasti käyttöön vielä yhden vuoden ajan, joten älä vaivaudu sen kanssa :). Jos haluat suojausta, käytä HTTPS: ää ja siinä kaikki.

        En ole varma, mitä Wheezy Web käyttää HTTP: lle, joten oletan, että se on WSGI.

        Tervehdys!

  6.   lajto dijo

    Muuten, vähän jotain ei mitään. Joissakin distroissa ilmestyy .python-munia koskeva VAROITUS-viesti. Mitään ei tapahdu, jos se näkyy, mutta jos se häiritsee sinua, voit poistaa sen seuraavilla tavoilla:

    chmod go = ~ / .python-munat

    Tervehdys!

  7.   Diego dijo

    Käytän Djangoa, mutta tarkistan dokumentaatiosta, miten se toimii. Kiitos jakamisesta. Kippis

  8.   JD Villegas dijo

    Sitä voidaan käyttää ikkunoista !!!, onko opetusohjelma ??

    kiitos

  9.   lalita dijo

    Hei, meillä on paljon kokemusta Pythonista. Minusta tuntuu, että he soutavat virtaa vastaan. Paras tähän kielelle keksitty asia on Django. He voivat tehdä tilastoja ja kuulla satoja ohjelmoijia ympäri maailmaa, se antaa sinulle yli 80%, useimmat eivät ole väärässä. Jos he soutavat tai uivat virtaa vastaan, he ennemmin tai myöhemmin hukkuvat ...