[Programmēšana] Ātrākais Python tīmekļa ietvars: wheezy.web

wheezy_web_logo

sēkšana.web tam nav logotipa; Attēlu izveidoju GIMP.

Ilgu laiku es pārtraucu programmēšanu Python, taču tas man netraucē dalīties ar jums pazīstamajās tehnoloģijās;). Pirms kāda laika es nokļuvu "vislabākā" tīmekļa ietvara meklēšanā Python, jo manis izmantotais (Web2Py) bija sasodīti lēns. Mana izpēte mani noveda pie sēkšana.web; tie, kas viņu pazīst, noteikti to ir darījuši caur iespaidīgs etalons, ko autors izveidojis savā emuārā:

python-ātrākais tīmekļa ietvars

Es zinu, 25.000 XNUMX pieprasījumu sekundē salīdzinājumā ar pārējiem ietvariem tā ir īsta piespēle. Pats izmantoju sēkšana.web kādu laiku, un man jāsaka, ka tas ir īsts mākslas darbs. Lai kur jūs to apskatītu: ātrums, vienkāršība, drošība ... Viss. Un virs tā ir vienas personas darbs: Andrijs Kornatskijs.

  • Tas darbojas ar Python 2, Python 3 y pypy. Pat ja 3 nodrošina labāku sniegumu, ieteicams turpināt lietot 2, līdz 3 ir pietiekami nobriedis.
  • Tās dizains ir moduļu, tāpēc sēkšana.web ir vairāk lietu: sēkšana. veidne, sēkšana.html, sēkšana.drošība... Izmantojiet vajadzīgās detaļas.
  • dokumentācija vienkārši un viegli saprotami.
  • Automātiska HTML optimizācija (Saspiež, tāpēc tas aizņem mazāk, neizmantojot ārējos rīkus).
  • Kā varētu būt citādi, tā ir bezmaksas programmatūra un atvērtā koda ; D.
  • utt ...

Andrija emuārā ir lieliskas apmācības instalēt sēkšana.web žāvēt o ar i18n (vairākas valodas); arī paskaidro kā izmantot sēkšana.web ar Nginx. Visu viņa apmācību negatīvie momenti ir tādi pieņemsim, ka izmantojat Debian, tā kā viņš nav testējis uz citiem distros.

Ja lietojat Fedora un jūs interesē sēkšana.web, tev paveicās! Šeit ir komanda, kas instalēs nepieciešamos pakotnes, lai varētu sekot tās apmācībām:

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

Apmācība, kuru piedāvā instalēt Endrijs sēkšana.web ar Nginx izmantojiet skriptu, kas īpaši paredzēts Debian, tāpēc jums tas būs jādara pats, ja izmantojat citu sistēmu. Manā gadījumā man pietiek ar uWSGI, tāpēc es to nekad neesmu izmēģinājis.

Patiesība ir tāda, ka pastāv sēkšana.web Es uzskatu, ka ir noziegums izmantot citu ietvaru, tāpēc, ja jūs strādājat ar Python, apskatiet to vismaz! Vienīgais trūkums, ko tam var piedēvēt, ir tas, ka tas nesniedz nekādu abstrakcijas slāni, lai atvieglotu darbu ar datu bāzēm (un tas arī nav nepieciešams, taču ir cilvēki, kas to novērtē).

Un tas arī viss. Īss, bet atbilstošs raksts. Es apsolu paņemt līdzi vēl interesantas tehnoloģijas! Tiekamies ~.

Starp citu, zinātkāre, vai jūs zināt, kāpēc to sauc par "sēkšanu"? Andrijs ir Debiana fans. Es to atstāju tur;).


22 komentāri, atstājiet savus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   Bruno Kasio teica

    Veiktspēja nav vienīgais faktors. Salīdzinot ar Django, tas ir diezgan nelasāms. Un godīgi sakot, 25000 pieprasījumi sekundē būtu jāskata darbībā, bet es labāk palieku pie 15000 (django), lai rakstītu veselīgi, un pārējais darbs tiek deleģēts infrastruktūrai, kas PATIESĪBĀ ir tā, kura saņems vai nē, 25000 pieprasījumu.

    Sveicieni! Paldies par datiem 🙂

    1.    Bruno Kasio teica

      Lieki teikt, ka salīdzināšanai es izmantoju citu sistēmu vecās versijas ...

      1.    lajto teica

        Etalona raksts ir no 2012. gada. Viņš to pārveidoja un paplašināja vēlreiz 2013. gadā, un viņš pats norādīja, ka tie ir no šī gada: «Jaunākās pieejamās versijas šajā rakstā (15. gada 2013. martā)»

    2.    lajto teica

      Jūsu minētā nesalasāmība, manuprāt, nav tik slikta. Es saprotu, ka bieži tiek meklēta vieglāka programmēšana, taču es nedomāju, ka tiešām ir ievērojamas atšķirības. Es gadu izmantoju Web2Py, un es jums apliecinu, ka tas ir viens no vienkāršākajiem izmantotajiem ietvariem. Protams, tā sniegums daudzējādā ziņā ir briesmīgs ... Standarta rakstā pats Massimo Di Pierro (Web2Py veidotājs) debatē ar Andriju, kurā viņš beidzot atzīst, ka vēl ir daudz ko uzlabot; runājot ar Andriju IRC, viņš man teica, ka "ir plaši atzīta filozofija visu ievietot rāmjos un uzpūst tos ar funkcijām, pat ja lielākā daļa netiek izmantota", un cik viņam taisnība ...

      Par to, ko jūs sakāt par infrastruktūru, es daļēji dalos ar jūsu teikto; 10.000 2 atšķirība ir DAUDZ, it īpaši, ja mēs runājam par vispopulārāko un nobriedušāko sistēmu, salīdzinot ar pavisam neseno un maz zināmo. Mana pieeja vienmēr ir apvienot maksimālu efektivitāti ar maksimālu produktivitāti, un es domāju, ka wheezy.web to dara vislabāk. Esmu izmantojis Web2Py (visvairāk), Django, Pyramid un wheezy.web, un es jums apliecinu, ka tas ir nepārspējams. Kad esat pielāgojies viņa rīcībai, jūs neatraujaties no viņa. Vienīgās Django priekšrocības ir tā lielā kopiena un resursi, kas atrodas visā internetā; tas ir, teikt: vieglums. wheezy.web salīdzinājumā ir diezgan jauns, un ļoti maz cilvēku par to zina; ja jums iet viegli, labāk WebXNUMXPy vai Django xD.

      Es nevēlos izvērsties, bet, runājot par pieprasījumiem sekundē, mēs runājam par vienlaicīgumu. Ja tiek meklēta vienlaicība, Python nav piemērota valoda. Tam ir domātas citas valodas, piemēram, Erlang vai Haskell (un, ja jūs mani pasteidzināt, Rust). Bet tieši šī iemesla dēļ ir iespaidīgi, ka wheezy.web, kas aizņem tik maz kodu, ir cilvēka darbs brīvajā laikā un citi faktori, ir izdevies sasniegt šādu sniegumu.

      Es saprotu, ko jūs sakāt par "veselīgu rakstīšanu", taču nekad nevar zināt, cik daudz projekts var izaugt ilgtermiņā. Izmantojot efektīvākus un vienlaicīgus rīkus, kā arī vienkāršus (es uzskatu, ka wheezy.web ir vienkāršs tā sniegumam), ietaupiet naudu un padariet projekta mērogu ilgāku, nemainot valodu. Galu galā viss ir naudā, kas jāmaksā savam serverim. PHP ir ļoti slavenas vietnes, kad PHP ir briesmīga veiktspēja ... Bet kā jūs atrisināt šo problēmu? Labāku serveru pirkšana. Ar citu pieeju to atrisina, labāk programmējot un ietaupot resursus: P.

      Man žēl, ka esmu tik daudz pagarinājusi sevi. Es ļoti viegli aizrāvos ar xDDD. Priekā!

      1.    Bruno Kasio teica

        Es lieliski sapratu, ko jūs domājat, bet tieši tā dēļ, ko jūs minat, ja projektam ir tendence augt vai nē, jo mēs ejam ar sēkšanu, nav datu bāzes slāņa.

        Manā skatījumā vislabāk nav precēties nevienā valodā. Ja vēlaties vienlaicīgumu, varat izmantot arī mezglu, tā dzinējs darbojas C

        Tas, ko jūs pieminējat par veiktspēju, ir ne tikai vertikāla mērogošana (PHP gadījums), piemēram, Facebook piedāvā HHVM, kuru esmu lasījis (nav pārbaudīts), kas uzlabo veiktspēju par 50%, un tas nav serveru pirkšana. Vienkāršs PHP bez kešatmiņas slāņiem un / vai citiem optimizācijas veidiem ir tikpat "slikts" kā jebkura cita valoda bez pēdējās, un es domāju, ka slikts ir dot viņiem vārdu, tas nav tikai "labāks kods".

        Priekā! 🙂

      2.    lajto teica

        Paskatīsimies, nav abstrakcijas slāņa. Bet jūs izmantojat atbilstošo bibliotēku vai moduli, lai strādātu ar savu datu bāzi un ārpus tās, vairs nav noslēpuma. Piemēram, Web2Py abstrakcijas slānis ir ļoti vienkāršs, taču veiktspēja krasi samazinās, jo jūs pat nevarat rakstīt optimizētu SQL. Viss atrodas Python; viegli, bet pretī sniegumam.

        Es pazīstu HHVM, un tieši tāpēc tādas valodas kā PHP mūsdienu laikiem ir briesmīgas; ja Facebook būtu Haskellā vai Erlangā, nebūtu bijis nepieciešams izveidot HHVM. Izmantojiet kešatmiņu, saspiediet nosūtītos un saņemtos failus utt. tie ir acīmredzami jebkuras attīstības aspekti. Jautājums ir tāds, ka instrumentam ir jāsamēro :). Un ir rīki, kas to nenodrošina. Labākais piemērs tam ir JavaScript ... Tādā gadījumā vismaz ir tādi brīnumi kā CoffeeScript, Dart utt. kas apkopo JS.

        Apsveikumi!

      3.    Bruno Kasio teica

        Lieliski! 🙂

        Tikai viena lieta, facebook, ja izmantojat haskell, precīzāk Haxl 🙂

      4.    Cēzars teica

        Nu, es ļoti daudz izmantoju web2py, es piekrītu, ka tas nav ātrākais ietvars, bet šis etalons šķiet mazliet nevietā, vēl jo vairāk, kad mēs runājam par pirms 3 gadiem, sveiki mēms web2py lietojums ir ļoti ielādēts salīdzinājumā ar citiem ietvariem, bet, godīgi sakot, es neesmu pieredzējis šo drausmīgo veiktspējas atšķirību starp manām lietojumprogrammām, kas rakstītas web2py un django.

        Starp citu, web2py, ja jūs varat rakstīt SQL, lai tieši izpildītu vaicājumus.

        Sveicieni.

  2.   urKh teica

    Ātrākais tīmekļa ietvars, ko jūs sakāt, bet jūs nerādāt dažus piemērus un citus galvenos faktorus, piemēram, attīstību, produktivitāti, dokumentāciju. Esošais django, es nezinu, kāpēc tas ir noziegums to neizmantot: p

    1.    lajto teica

      - Dokumentācijā jau ir piemēri. Arī savā BitBucket lapā: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Runājot par attīstību un produktivitāti, es personīgi domāju, ka tā apkopošana "vienkāršībā" ir labs risinājums. Kas vēl ir vienkāršākas un vieglākas sistēmas? Protams. Bet ne ar tik lielu sniegumu.
      - Esmu ievietojis saiti uz dokumentāciju rakstā xDDD.
      - Kāpēc es saku, ka tas ir noziegums, ir tāpēc, ka es uzskatu, ka tīmekļa vietnei jābūt pēc iespējas efektīvākai un visādā ziņā. Kā jau minēju iepriekš, ir vieglāk izmantojamas ietvarstruktūras, taču arī wheezy.web lietošana nav C programmēšana. Vienkārši jāpamēģina vairāk :).

      Sveiciens ^^.

  3.   lajto teica

    Starp citu, ja kāds ir slinks, lai uzzinātu, un domā, ka Wheezy Web uzvar tikai pieprasījumos sekundē ... Šeit ir vēl daži etaloni:

    http://paste.desdelinux.net/5128 (surogātpasta filtrs no DesdeLinux Tas neļaus man ievietot tik daudz saišu)

    Es atvainojos, ka iepriekš tos neiekļāvu. Es domāju, ka pietiek ar vienu, lai pievērstu ziņkārību xD. Priekā!

  4.   Fenrizs teica

    Pagaidām apmierināts ar Django.

    1.    Oklajs teica

      Eh, katru reizi, kad es lasīju šīs lietas, tas mani sadusmo, es domāju, ka tas bija tikai ar php ietvariem (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Ja Django jau ir kopiena (diezgan liela) un tas ir lielisks ietvars, kāpēc tā vietā, lai tērētu laiku riteņa izgudrošanai, nepievienojieties django komandai. @ Lajto sarunā ar wheezy.web autoru, kāpēc ne jūs viņam jautājat? Ja jūs nekad neesat domājis par pievienošanos django komandai, sasodīts. Priekā ..

      1.    lajto teica

        Lai gan abi ir tīmekļa ietvari, tiem ir ļoti atšķirīga pieeja. Django ir smags, tajā ir daudz koda, savukārt wheezy.web ir viegls, tas ir apņēmies vienkāršot un optimizēt. Cik es zinu, wheezy.web ir vienīgais patiesi modulārais Python tīmekļa ietvars (tas ir, tas sadala visu jūsu kodu dažādās daļās, kas var darboties neatkarīgi). Tam ir daudz īpašību, kas to atšķir no pārējiem.

        Kāpēc gan nepievienoties Django, jūs sakāt? Jo Django ir veidots ar pilnīgi atšķirīgu pieeju. Kā jūs izmantojat moduļu dizainu Django? Būtu jāpārtaisa praktiski no nulles! Tas pats ar daudziem citiem jautājumiem.

        Es saprotu, ka "labāks vienots ietvars, kas labi darbojas ar lielu kopienu", bet tas nav tik vienkārši. Tātad jūs saprotat, izveidojot virspusēju asociāciju, Django ir līdzīgs Debianam un wheezy.web kā… Arch? Gentoo? Tas noteikti ir slikts piemērs, bet es domāju, ka xDDD ir saprotams.

        Apsveikumi!

  5.   Ulises teica

    Kā ar Lajto, hei, es veidoju lietotni, un es izlasīju wheezy.web dokumentāciju, un tas ir pirmais pitona tīmekļa ietvars, ko es sapratu pirmo reizi. Redziet, ka man nav daudz zināšanu par tīkliem un tīmekli, bet es ir īpaša pievilcība programmēšanai.
    Vai jūs varētu man palīdzēt, kā modificēt sveicienu pasauli, lai tā kļūtu par publisku serveri? Varbūt tas ir ļoti dumjš jautājums, piedodiet, bet es dokumentācijā nevaru atrast, kā to izdarīt.
    Cits jautājums 😉 get un post metodēs, kad es atgriežu informāciju, kas nav html lapa, vai es atgriezu informāciju tādu, kāda tā ir? kā virkni vai sarakstu vai jebkura veida datus. Klientam lietotne android.

    1.    lajto teica

      Sveiks, Ulises! Es esmu tik priecīgs, ka jūs pārbaudāt sēkšanu.

      Par to, ko komentējat, es ļoti iesaku neuzstādīt savu struktūru. Vienīgais, ar kuru brauc Andrijs, ir diezgan labs, tāpēc iesaku to ievērot. Rakstā ir divas saites uz Andrija emuāru, kur viņš izskaidro soļus ar i18n un bez i18n. Gadījumā, ja tas ir mazliet mulsinoši, es zemāk paskaidrošu, kā to izdarīt bez i18n:

      Atveriet termināli un izpildiet šīs četras komandas (aizstājiet "test-web" ar mapi, kuru vēlaties savam projektam):

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

      unzip Quickstart-empty.zip

      mv quickstart-tukša testa-web

      rm quickstart-empty.zip

      Ja vēlaties izmantot PIL, modificējiet failu setup.py un noņemiet atbilstošā koda komentāru. Kad esat gatavs, izpildiet šādas trīs komandas:

      web-test-cd

      padarīt env

      env / bin / easy_install uwsgi

      Jūsu serveris jau ir pievienots. Ja vēlaties veikt ātru etalonu, lai pārbaudītu, vai tas darbojas, atrodoties mapē, jūs palaižat:

      veikt testa deguna vāka etalonu

      Es iesaku jums apmeklēt vietni "etc / development.ini" un nomainīt "limit-as = 120" uz "limit-as = 512". Tas ir tas, cik MB RAM uWSGI "apēdīs", tāpēc vajadzības gadījumā to varētu palielināt nākotnē.

      Visbeidzot, katru reizi, kad vēlaties atvērt serveri, būtu pietiekami, lai atrastu sevi projekta mapē un izpildītu:

      taisīt uwsgi

      Par citiem jautājumiem ... Pēc noklusējuma serveris ir ieprogrammēts darboties vietējā hostā. Ja vēlaties to padarīt publisku, jo tas jau ir gatavs un vēlaties to izmantot fiziskā serverī ražošanas procesā, vienkārši atveriet "src / app.py" un atrodiet šo: make_server (", 8080, main). Pirmais parametrs ir tukša virkne, vai ne? Nu, tur jūs ievietojat sava servera IP. Otrais parametrs ir ports, kuru vēlaties izmantot, kas pēc noklusējuma ir 8080.

      Visbeidzot, tas, ko jūs sakāt par kaut ko citu, nevis HTML, atgriešanu, protams, varat! Dokumentācijā viņi paskaidro, kā atgriezt visu: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Sveiciens! Jebkas, ko tu man saki;).

      1.    Ulises teica

        Liels paldies Lajto, jūs patiešām noskaidrojāt manas šaubas, biju mēģinājis ar django, bet, kā es jums teicu, ka neesmu sistēmu inženieris, un django, manuprāt, tas sniedz daudz vairāk nekā tas, kas man vajadzīgs, izmantojiet vietni wheezy.web, lai pārbaudītu lietojumprogrammu android un sazinātos ar to ar serveri . Kaut kas ļoti vienkāršs, bet diezgan ātrs un praktisks. Sveiki, vēl viens jautājums, nesen es redzēju, ka ir liels satraukums ar http / 2, kā es varu zināt, kāds protokols darbojas wheezy.web? Vai es varu izveidot serveri, kas wheezy.web izmanto http / 2? Vai iesakiet man grāmatu, emuāru, apmācību blokos, kas var izskaidrot visu tīklu un sakaru jautājumu. Vēlreiz paldies.

      2.    lajto teica

        Sveiks atkal Ulises ^^.

        HTTP / 2 ir pavisam nesen un netiks nopietni pieņemts vēl 1 gadu, tāpēc neuztraucieties ar to :). Ja vēlaties drošību, izmantojiet HTTPS, un viss.

        Es neesmu pārliecināts, ko Wheezy Web izmanto HTTP, tāpēc pieņemu, ka tas būs WSGI.

        Sveiciens!

  6.   lajto teica

    Starp citu, mazliet kaut kas no nekā. Dažos rajonos tiek parādīts BRĪDINĀJUMS par .python-egg. Nekas nenotiek, ja tas parādās, bet, ja jums šķiet, ka tas ir kaitinošs, varat to noņemt, izmantojot:

    chmod go = ~ / .python-olas

    Apsveikumi!

  7.   Diego teica

    Es izmantoju Django, bet es pārbaudīšu dokumentāciju, lai redzētu, kā tas darbojas. Paldies par dalīšanos. Priekā

  8.   JD Villegas teica

    To var izmantot no windows !!!, vai ir kāda pamācība ??

    Gracias

  9.   lalita teica

    Sveiki, mums ir liela pieredze ar Python. Man šķiet, ka viņi airē pret straumi. Labākais, kas šai valodai jebkad izgudrots, ir Django. Viņi var sastādīt statistiku un konsultēties ar simtiem programmētāju no visas pasaules, tas jums dos vairāk nekā 80%, lielākā daļa no viņiem nav kļūdījušies. Ja viņi airē vai peld pret straumi, agri vai vēlu viņi noslīcinās ...