[Programmeerimine] Kiireim Pythoni veebiraamistik: wheezy.web

wheezy_web_logo

vilistav veeb sellel pole logo; Tegin pildi GIMP-is.

Olen juba pikka aega Pythonis programmeerimise katkestanud, kuid see ei takista mind teiega tuttavaid tehnoloogiaid jagamast;). Mõni aeg tagasi sattusin Pythoni "parima" veebiraamistiku otsingutesse, kuna see, mida kasutasin (Web2Py), oli neetult aeglane. Minu uurimistöö viis mind selleni vilistav veeb; need, kes teda tunnevad, on seda kindlasti läbi teinud suurejooneline etalon, mille autor on oma blogis teinud:

python-kiireim-veebiraamistik

Ma tean, 25.000 XNUMX taotlust sekundis võrreldes teiste raamistikega on see tõeline läbipääs. Ma ise kasutasin vilistav veeb mõnda aega ja pean ütlema, et see on tõeline kunstiteos. Ükskõik kuhu vaatate: kiirus, lihtsus, turvalisus ... Kõik. Ja selle kohal on ühe inimese töö: Andriy Kornatskyy.

  • See töötab koos Python 2, Python 3 y pypy. Isegi kui 3 annab parema jõudluse, on eelistatav jätkata 2 kasutamist, kuni 3 on piisavalt küps.
  • Selle disain on modulaarnenii et vilistav veeb on rohkem asju: vilisev. mall, vilistav hht, vilistav hingamine.turvalisus... Kasutage soovitud osi.
  • dokumentatsioon lihtne ja arusaadav.
  • Automaatne HTML-i optimeerimine (surub kokku nii, et see võtab vähem väliseid tööriistu kasutamata).
  • Kuidas saaks teisiti olla, on tasuta tarkvara ja avatud lähtekoodiga ; D.
  • jne ...

Andriy ajaveebis on suurepärased õpetused paigaldama vilistav veeb kuivama o i18n-ga (mitmes keeles); selgitab ka kuidas kasutada vilistav veeb Nginxiga. Kõigi tema õpetuste negatiivne külg on see Oletame, et kasutate Debiani, kuna ta pole teiste distrodega katsetanud.

Kui kasutate Fedora ja olete huvitatud vilistav veeb, sa oled õnnelik! Siin on käsk, mis installib vajalikud paketid, et saaksite selle õpetusi järgida:

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

Õpetus, mille Andriy pakub installida vilistav veeb Nginxiga kasutab see spetsiaalselt Debiani jaoks loodud skripti, nii et peate seda tegema ise, kui kasutate mõnda muud süsteemi. Minu puhul piisab minu jaoks uWSGI-st, nii et ma pole seda kunagi proovinud.

Tõde on see, et olemas vilistav veeb Leian, et teise raamistiku kasutamine on kuritegu, nii et kui te töötate Pythoniga, siis vaadake seda vähemalt! Ainus puudus, mille sellele saab omistada, on see, et see ei too mingit abstraktsiooni kihti, et hõlbustada andmebaasidega töötamist (ega vajagi, kuid on inimesi, kes seda hindavad).

Ja see on ka kõik. Lühike, kuid asjakohane artikkel. Luban tuua veel huvitavaid tehnoloogiaid! Kohtumiseni ~.

Muide, uudishimu, kas teate, miks seda nimetatakse "vilistavaks"? Andriy on Debiani fänn. Jätan selle sinna;).


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   Bruno cascio DIJO

    Jõudlus pole ainus tegur. Djangoga võrreldes on see üsna loetamatu. Ja ausalt öeldes peaks 25000 taotlust sekundis nägema tegevuses, kuid ma eelistan jääda terveks kirjutamiseks 15000 (django) juurde ja ülejäänud töö delegeeritakse infrastruktuurile, mis on TÕESTI see, mis saab või mitte, 25000 taotlust.

    Terviseks! Täname andmete eest 🙂

    1.    Bruno cascio DIJO

      Ütlematagi selge, et võrdlusuuringu jaoks kasutan teiste raamistike vanu versioone ...

      1.    lajto DIJO

        Võrdlusartikkel pärineb aastast 2012. Ta muutis ja laiendas seda uuesti 2013. aastal ning ise täpsustas, et need pärinevad sellest aastast: «Selle artikli uusimad saadaolevad versioonid (15. märts 2013)»

    2.    lajto DIJO

      Teie loetamatu loetavus pole minu arvates nii halb. Ma saan aru, et programmeerimist taotletakse sageli lihtsuse järgi, kuid ma arvan, et tegelikult pole märkimisväärseid erinevusi. Kasutasin aasta aega Web2Pyt ja kinnitan teile, et see on üks lihtsamaid saadaolevaid raamistikke. Muidugi on selle esitus mitmes mõttes kohutav ... Massimo Di Pierro ise (Web2Py looja) peab võrdlusartiklis Andriyga arutelu, kus ta tunnistab lõpuks, et palju on veel parandada; IRC-s Andriyga rääkides ütles ta mulle, et "on laialt aktsepteeritud filosoofia, et kõik pannakse raamidesse ja punnitatakse neid funktsioonidega, isegi kui enamikku neist ei kasutata", ja kui õige tal oli ...

      Infrastruktuuri kohta öeldu kohta jagan osaliselt seda, mida te ütlete; 10.000 2 erinevust on PALJU, eriti kui räägime kõige populaarsemast ja küpsemast raamistikust versus väga hiljutine ja vähetuntud raamistik. Minu lähenemisviis on alati kombineerida maksimaalne efektiivsus maksimaalse tootlikkusega ja ma arvan, et wheezy.web teeb seda kõige paremini. Olen kasutanud Web2Py (kõige rohkem), Django, Pyramid ja wheezy.web ning kinnitan teile, et see on konkurentsitult parim. Kui olete kohanenud tema käitumisviisiga, ei lahku te temast. Django ainsad plussid on suur kogukond ja kogu Internetis asuvad ressursid; see tähendab: kergust. wheezy.web on sellega võrreldes üsna uus ja sellest teavad väga vähesed inimesed; kui minna lihtsalt, parem WebXNUMXPy või Django xD.

      Ma ei taha laieneda, kuid kui räägime sekundis päringutest, siis samaaegsusest. Kui otsitakse samaaegsust, pole Python sobiv keel. Selleks on teised keeled nagu Erlang või Haskell (ja kui te mind kiirustate, siis Rust). Kuid just sel põhjusel on muljetavaldav, et wheezy.web, mis hõivab nii vähe koodi, olles vabal ajal inimese töö ja muud tegurid, on suutnud sellise jõudluse saavutada.

      Ma saan aru, mida te ütlete "tervisliku kirjutamise" kohta, kuid kunagi ei tea, kui palju projekt võib pikas perspektiivis kasvada. Kasutades nii tõhusamaid ja samaaegseid kui ka lihtsaid tööriistu (väidan, et wheezy.web on oma jõudluse jaoks lihtne), säästate raha ja muudate projekti skaalat kauem ilma keelt muutmata. Lõpuks on kõik rahas, mida peate oma serveri eest maksma. PHP-s on väga kuulsaid veebisaite, kui PHP on kohutava toimivusega ... Aga kuidas te selle probleemi lahendate? Paremate serverite ostmine. Teise lähenemisviisi korral lahendatakse see paremini programmeerides ja ressursse säästes: P.

      Mul on kahju, et olen ennast nii palju pikendanud. Olen väga kergesti kirglik xDDD vastu. Terviseks!

      1.    Bruno cascio DIJO

        Sain suurepäraselt aru, mida mõtlete, kuid just selle pärast, mida mainite, kui projekt kipub kasvama või mitte, kuna me läheme vilistavaga, pole andmebaasikihti.

        Minu arvates on kõige parem mitte abielluda ühegi keelega. Kui soovite samaaegsust, võite kasutada ka Node'i, selle mootor töötab C-s.

        See, mida te jõudluse kohta mainite, ei ole ainult vertikaalne skaleerimine (PHP puhul), näiteks Facebook pakub HHVM-i, mida olen lugenud (testimata), mis parandab jõudlust 50% ja see pole serverite ostmine. Lihtsamalt öeldes on vahemälu kihtideta ja / või muude optimeerimisviisideta PHP sama "halb" kui ükski teine ​​keel ilma viimasteta, ja ma mõtlen halba neile nime anda, see pole lihtsalt "parem programmeerimine".

        Terviseks! 🙂

      2.    lajto DIJO

        Vaatame, abstraktsiooni kihti pole. Kuid kasutate vastavat teeki või moodulit oma andmebaasiga töötamiseks ja väljaspool seda pole enam saladust. Web2Py abstraktsioonikiht on näiteks väga lihtne, kuid jõudlus langeb dramaatiliselt, kuna te ei saa isegi optimeeritud SQL-i kirjutada. Kõik on Pythonis; lihtne, kuid vastutasuks tulemuslikkuse eest.

        Ma tean HHVM-i ja just seetõttu on PHP-taolised keeled tänapäeva jaoks kohutavad; kui Facebook oleks Haskellis või Erlangis, poleks olnud vaja HHVM-i luua. Kasutage vahemälu, pakkige saadetud ja vastuvõetud failid jne. need on igasuguse arengu ilmsed aspektid. Küsimus on selles, et tööriist peab mõõtma :). Ja on vahendeid, mis seda ei anna. Selle parim näide on JavaScript ... Sel juhul on vähemalt imesid nagu CoffeeScript, Dart jne. mis koostatakse JS-ile.

        Tervitused!

      3.    Bruno cascio DIJO

        Täiuslik! 🙂

        Ainult üks asi, facebook, kui kasutate haskelli, täpsemalt Haxl 🙂

      4.    Cesar DIJO

        Noh, ma kasutan palju web2py-d, olen nõus, et see pole kõige kiirem raamistik, kuid see võrdlusalus tundub veidi kohatu, veelgi enam, kui me räägime 3 aastat tagasi, on web2py tere tumm rakendus väga laaditud võrreldes teiste raamistikega, kuid ma pole ausalt öeldes kogenud seda tohutut erinevust toimivuses oma veebi rakenduses Web2py ja django kirjutatud rakenduste vahel.

        Muide, web2py-s saate SQL-i kirjutada päringute otse täitmiseks.

        Tervitused.

  2.   urKh DIJO

    Kiireim veebiraamistik, mille ütlete, kuid te ei näita ühtegi näidet ja muid võtmetegureid, nagu arendus, tootlikkus, dokumentatsioon. Olemasolev django, ma ei tea, miks näib olevat kuritegu seda mitte kasutada: lk

    1.    lajto DIJO

      - Dokumentatsioonis on juba näiteid. Oma BitBucketi lehel: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Arengu ja tootlikkuse osas arvan isiklikult, et selle kokkuvõtmine "lihtsuses" on hea võimalus. Mis on veel lihtsamad ja lihtsamad raamistikud? Selge. Kuid mitte nii suure jõudlusega.
      - Olen linki dokumentatsiooni lisanud artiklisse xDDD.
      - Miks ma ütlen, et see on kuritegu, on see, et usun, et veebileht peaks olema igas mõttes võimalikult tõhus. Nagu ma juba varem mainisin, on raamistikke, mida on lihtsam kasutada, kuid ka wheezy.webi kasutamine pole ka C. programmeerimine. Tuleb lihtsalt rohkem proovida :)

      Tervitused ^^.

  3.   lajto DIJO

    Muide, juhul kui keegi on laisk, et teada saada ja arvab, et Wheezy Web võidab ainult päringute korral sekundis ... Siin on veel mõned võrdlusalused:

    http://paste.desdelinux.net/5128 (rämpsposti filter DesdeLinux See ei lase mul nii palju linke panna)

    Vabandan, et pole neid varem kaasanud. Arvasin, et ühest piisab uudishimu xD tõmbamiseks. Terviseks!

  4.   fenriz DIJO

    Siiani Djangoga rahul.

    1.    savi DIJO

      Ehh, iga kord, kui neid asju lugesin, ajab see mind vihaseks, arvasin, et see oli ainult php-raamistike (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!) puhul. Kui Djangol on juba kogukond (üsna suur) ja see on suurepärane raamistik, siis miks mitte ratta leiutamise aja raiskamise asemel django meeskonnaga liituda. @ Lajto vestluses wheezy.webi autoriga, miks te temalt ei küsi sa pole kunagi mõelnud liituda django meeskonnaga, neetud.

      1.    lajto DIJO

        Kuigi mõlemad on veebiraamistikud, on nende lähenemisviisid väga erinevad. Django on raske, sellel on palju koodi, samas kui wheezy.web on kerge ning pühendunud lihtsusele ja optimeerimisele. Minu teada on wheezy.web ainus tõeliselt modulaarne Pythoni veebiraamistik (see tähendab, et see jagab kogu teie koodi erinevateks osadeks, mis võivad töötada iseseisvalt). Sellel on palju omadusi, mis eristavad seda teistest.

        Miks mitte liituda Djangoga, ütlete? Sest Django on kujundatud täiesti teistsuguste lähenemistega. Kuidas rakendate Djangole moodulkujundust? See tuleks praktiliselt nullist ümber teha! Sama paljude muude küsimustega.

        Ma saan aru, et "parem ühtsem raamistik, mis sobib hästi suure kogukonnaga", kuid see pole nii lihtne. Lihtsalt, et saaksite aru, on pealiskaudse ühenduse loomisega Django justkui Debian ja wheezy.web, nagu oleks see ... Arch? Gentoo? See on kindlasti halb näide, kuid ma arvan, et xDDD on arusaadav.

        Tervitused!

  5.   Ulises DIJO

    Aga Lajto, hei, ma teen rakendust ja lugesin wheezy.webi dokumentatsiooni ja see on esimene pythoni veebiraamistik, millest ma esimest korda aru sain 🙂 Näed, mul pole võrkude ja veebi kohta palju teadmisi, kuid programmeerimise vastu on mul eriline tõmme .
    Kas saaksite mind aidata, kuidas muuta tere maailma avalikuks serveriks? Võib-olla on see väga rumal küsimus, vabandust, aga ma ei leia dokumentatsioonist, kuidas seda teha.
    Teine küsimus, get ja post meetodites, kui ma tagastan teavet, mis pole HTML-leht, kas ma tagastan teabe sellisena nagu see on? stringi või loendina või mis tahes tüüpi andmetena. Kliendile rakendus androidis.

    1.    lajto DIJO

      Tere, Ulises! Mul on nii hea meel, et te vilistavat veebi katsetate: D.

      Selle kohta, mida kommenteerite, soovitan tungivalt mitte oma struktuuri paigaldada. See, millega Andriy sõidab, on üsna hea, nii et soovitan teil seda järgida. Artiklis on kaks linki Andriy ajaveebi, kus ta selgitab samme i18n-ga ja ilma i18n-ga. Kui see on natuke segane, selgitan allpool, kuidas seda teha ilma i18n-ta:

      Avage terminal ja käivitage need neli käsku (asendage "test-web" projekti jaoks soovitud kausta nimega):

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

      lahtipakkimine quickstart-empty.zip

      mv kiirstart-tühi test-veeb

      rm Quickstart-empty.zip

      Kui soovite kasutada PIL-i, muutke faili setup.py ja kommenteerige vastav kood. Kui olete valmis, käivitage järgmised kolm käsku:

      veebitesti-cd

      teha env

      env / bin / easy_install uwsgi

      Teie server on juba ühendatud. Kui soovite kausta sees olles teha kiire võrdlusuuringu, kas see töötab, käivitate:

      tehke ninakatte katse võrdlusalus

      Soovitan teil minna saidile "etc / development.ini" ja muuta "limit-as = 120" väärtuseks "limit-as = 512". Nii palju uWSGI MB RAM-i "ära sööb", nii et seda saaks vajadusel tulevikus suurendada.

      Lõpuks, piisab iga kord, kui soovite oma serveri avada, leida ennast oma projekti kaustast ja käivitada:

      uwsgi tegema

      Muudel küsimustel ... Vaikimisi on server programmeeritud töötama localhostil. Kui soovite selle avalikustada, kuna see on teil juba valmis ja soovite seda füüsilises serveris tootmises kasutada, avage lihtsalt "src / app.py" ja leidke järgmine: make_server (", 8080, main). Esimene parameeter on tühi string, eks? Noh, sinna panete oma serveri IP. Teine parameeter on port, mida soovite kasutada, mis on vaikimisi 8080.

      Lõpuks, mida te ütlete midagi muud kui HTML-i tagastamise kohta, muidugi saate! Dokumentatsioonis selgitatakse, kuidas kõik tagastada: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Tervitus! Mida iganes sa mulle ütled;).

      1.    Ulises DIJO

        Suur aitäh Lajto, sa tõesti selgitasid mu kahtlusi, olin proovinud djangoga, kuid nagu ma ütlesin sulle, et ma pole süsteemiinsener ja django, arvan, et see toob palju rohkem kui mul vaja oli, kasuta rakendust wheezy.web androidis rakenduse testimiseks ja serveriga suhtlemiseks . Midagi väga lihtsat, kuid üsna kiiret ja praktilist. Hei, veel üks küsimus, hiljuti nägin, et http / 2-ga oli suur kära, kuidas ma tean, mis protokollis wheezy.web töötab? Kas ma saan teha serveri, mis kasutab http / 2-t veebis wheezy.web? Või soovitage mulle raamatut, ajaveebi, õpetust, mis on plokkidena, mis suudavad kogu võrkude ja kommunikatsiooni asja selgitada. Aitäh veel kord.

      2.    lajto DIJO

        Tere jälle Ulises ^^.

        HTTP / 2 on väga hiljutine ja seda ei võeta tõsiselt üle veel 1 aasta, nii et ärge sellega vaeva nägi :). Kui soovite turvalisust, kasutage HTTPS-i ja kõik.

        Ma pole kindel, mida Wheezy Web HTTP jaoks kasutab, seega eeldan, et see on WSGI.

        Tervitused!

  6.   lajto DIJO

    Muide, natuke midagi mitte midagi. Mõnes distros ilmub hoiatusteade .python-munade kohta. Midagi ei juhtu, kui see ilmub, kuid kui leiate, et see on tüütu, saate selle eemaldada:

    chmod go = ~ / .python-munad

    Tervitused!

  7.   Diego DIJO

    Ma kasutan Djangot, kuid kontrollin dokumentatsiooni, et näha, kuidas see töötab. Aitäh jagamast. Terviseks

  8.   JD Villegas DIJO

    Seda saab kasutada aknast !!!, kas on olemas õpetus?

    tänan

  9.   lalita DIJO

    Tere, meil on Pythoniga palju kogemusi. Mulle tundub, et nad sõudavad vastu hoovust. Parim asi, mis selle keele jaoks kunagi leiutatud on, on Django. Nad saavad teha statistikat ja konsulteerida sadade programmeerijatega üle kogu maailma, see annab teile rohkem kui 80%, enamik neist ei eksi. Kui nad sõudavad või ujuvad vastu voolu, upuvad nad varem või hiljem ...