[Programmering] Den hurtigste Python-webramme: wheezy.web

wheezy_web_logo

wheezy.web den har intet logo Jeg lavede billedet i GIMP.

I lang tid stoppede jeg programmeringen i Python, men det forhindrer mig ikke i at dele de teknologier, jeg kender med dig;). For et stykke tid siden begyndte jeg at søge efter den "bedste" webramme i Python, da den jeg brugte (Web2Py) var forbandet langsom. Min forskning førte mig til wheezy.web; de, der kender ham, har sikkert gjort det gennem spektakulært benchmark lavet af forfatteren på sin blog:

python-hurtigste-web-framework

Jeg ved, 25.000 anmodninger pr. Sekund sammenlignet med de øvrige rammer er det en rigtig pas. Jeg brugte mig selv wheezy.web i et stykke tid, og jeg må sige, at det er et ægte kunstværk. Uanset hvor du ser på det: hastighed, enkelhed, sikkerhed ... Alt. Og over det er en enkelt persons arbejde: Andriy Kornatskyy.

  • Det fungerer med Python 2, Python 3 y PYPY. Selvom 3 giver bedre ydeevne, foretrækkes det at fortsætte med at bruge 2, indtil 3 er moden nok.
  • Dens design er modulær, så wheezy.web er flere ting: hvæsende. skabelon, wheezy.html, hvæsende. sikkerhed... Brug de dele, du ønsker.
  • dokumentation enkel og let at forstå.
  • Automatisk HTML-optimering (komprimerer det, så det tager mindre op uden brug af eksterne værktøjer).
  • Hvordan kunne det være ellers, det er det gratis software og open source D.
  • osv. ...

På Andriys blog er der gode tutorials til installere wheezy.web tørre o med i18n (flere sprog); forklarer også hvordan man bruger wheezy.web med Nginx. Ulempen ved alle hans tutorials er, at antag, at du bruger Debian, da han ikke har testet på andre distroer.

Hvis du bruger Fedora og du er interesseret wheezy.web, du er heldig! Her er kommandoen, der installerer de nødvendige pakker for at kunne følge vejledningerne:

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

Den tutorial, som Andriy tilbyder at installere wheezy.web med Nginx bruger det et script designet specielt til Debian, så du bliver nødt til at gøre det selv, hvis du bruger et andet system. I mit tilfælde er uWSGI nok for mig, så jeg har aldrig prøvet det.

Sandheden er, at den eksisterer wheezy.web Jeg finder det en forbrydelse at bruge en anden ramme, så hvis du arbejder med Python, skal du i det mindste se på det! Den eneste ulempe, der kan tilskrives det, er, at det ikke medfører noget abstraktionslag for at lette arbejdet med databaser (det er heller ikke nødvendigt, men der er folk, der sætter pris på det).

Og det er alt. En kort, men relevant artikel. Jeg lover at medbringe mere interessante teknologier! Vi ses ~.

Forresten, en nysgerrighed, ved du hvorfor det kaldes "hvæsende"? Andriy er fan af Debian. Jeg lader det være der;).


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Bruno cascio sagde han

    Ydeevne er ikke den eneste faktor. Sammenlignet med Django er det ret ulæseligt. Og ærligt talt skal de 25000 anmodninger pr. Sekund ses i aktion, men jeg foretrækker at blive hos 15000 (django) skrive sundt, og resten af ​​arbejdet delegeres til infrastrukturen, som virkelig er den, der vil modtage eller ikke , 25000 anmodninger.

    Skål! Tak for dataene 🙂

    1.    Bruno cascio sagde han

      Naturligvis bruger jeg gamle versioner af andre rammer til benchmark ...

      1.    lajto sagde han

        Benchmark-artiklen er fra 2012. Han ændrede og udvidede den igen i 2013, og han specificerede selv, at de er fra det år: «Seneste tilgængelige versioner i skrivende stund (15. marts 2013)»

    2.    lajto sagde han

      Den ulæselighed, du nævner, synes jeg ikke er så slem. Jeg forstår, at der ofte søges let på programmering, men jeg tror ikke, der er virkelig store forskelle. Jeg brugte Web2Py i et år, og jeg forsikrer dig om, at det er en af ​​de nemmeste at bruge rammer til rådighed. Selvfølgelig er dens præstation forfærdelig på mange måder ... I benchmark-artiklen Massimo Di Pierro selv (skaberen af ​​Web2Py) har en debat med Andriy, hvor han endelig indrømmer, at der er meget at forbedre; taler med Andriy på IRC, fortalte han mig "der er en bredt accepteret filosofi om at sætte alt i rammer og opblæse dem med funktioner, selvom de fleste ikke bruges", og hvor ret han havde ...

      Om det, du siger om infrastrukturen, deler jeg delvist, hvad du siger; 10.000 forskel er MEGET, især når vi taler om de mest populære og modne rammer i forhold til en meget ny og lidt kendt. Min tilgang er altid at kombinere maksimal effektivitet med maksimal produktivitet, og det synes jeg wheezy.web gør bedst. Jeg har brugt Web2Py (mest), Django, Pyramid og wheezy.web, og jeg forsikrer dig om, at det er uovertruffen. Når du først har tilpasset dig hans måde at gøre ting på, adskiller du dig ikke fra ham. De eneste fordele ved Django er det store samfund, det har, og de ressourcer, der findes over Internettet; det vil sige: lethed. wheezy.web er forholdsvis nyt i sammenligning, og meget få mennesker ved om det; hvis du går let, bedre Web2Py eller Django xD.

      Jeg vil ikke udvide mig selv, men når vi taler om anmodninger i sekundet, taler vi om samtidighed. Hvis der søges samtidighed, er Python ikke det rette sprog. Det er hvad andre sprog som Erlang eller Haskell er for (og hvis du skynder mig, Rust). Men netop af denne grund er det imponerende, at wheezy.web, der besætter så lidt kode, da det er en persons arbejde i deres fritid og andre faktorer, har formået at opnå en sådan præstation.

      Jeg forstår, hvad du siger om "sund skrivning", men du ved aldrig, hvor meget et projekt kan vokse på lang sigt. Ved hjælp af mere effektive og samtidige værktøjer såvel som enkle (jeg hævder, at wheezy.web er enkel for den ydeevne, den har), sparer du penge og laver projektets skalering længere uden at ændre sprog. I sidste ende er alt i de penge, som man skal betale for sin server. Der er meget berømte websteder i PHP, når PHP er forfærdelig i ydeevne ... Men hvordan løser du dette problem? Køb bedre servere. Med den anden tilgang løses det ved at programmere bedre og spare ressourcer: P.

      Jeg er ked af at have udvidet mig så meget. Jeg brænder meget let for xDDD. Skål!

      1.    Bruno cascio sagde han

        Jeg forstod perfekt, hvad du mener, men netop på grund af hvad du nævner, hvis et projekt har tendens til at vokse eller ej, da vi går med wheezy, er der intet databaselag.

        Efter min mening er det bedst ikke at gifte sig med noget sprog. Hvis du vil have samtidighed, kan du også bruge Node, dens motor kører i C.

        Hvad du nævner om ydeevne, er ikke bare skalering lodret (tilfældet med PHP), Facebook tilbyder for eksempel HHVM, som jeg har læst (ikke testet), der forbedrer ydeevnen med 50%, og det er ikke at købe servere. Kort sagt, PHP uden cachelag og / eller andre måder at optimere er lige så "dårligt" som ethvert andet sprog uden sidstnævnte, og jeg mener dårligt at give dem et navn, det er ikke bare "bedre programmering".

        Hilsner! 🙂

      2.    lajto sagde han

        Lad os se, hvad der ikke er, er et lag af abstraktion. Men du bruger det tilsvarende bibliotek eller modul til at arbejde med din database og udenfor, der er ikke mere mysterium. Web2Py-abstraktionslaget er f.eks. Meget simpelt, men ydeevnen falder dramatisk, da du ikke engang kan skrive optimeret SQL. Alt er i Python; let, men til gengæld for ydeevne.

        Jeg kender HHVM, og det er netop derfor sprog som PHP er forfærdelige for moderne tid; hvis Facebook var i Haskell eller Erlang, ville det ikke have været nødvendigt at oprette HHVM. Brug cache, komprimere filer, der sendes og modtages osv. de er åbenlyse aspekter af enhver udvikling. Problemet er, at værktøjet skal måle sig :). Og der er værktøjer, der ikke leverer det. Det bedste eksempel på dette er JavaScript ... I det tilfælde er der i det mindste vidundere som CoffeeScript, Dart osv. som kompileres til JS.

        Hilsner!

      3.    Bruno cascio sagde han

        Perfekt! 🙂

        Bare én ting, facebook hvis du bruger haskell, mere præcist Haxl 🙂

      4.    Hold op sagde han

        Nå, jeg bruger web2py meget, jeg er enig i, at det ikke er den hurtigste ramme, men det benchmark virker lidt malplaceret, endnu mere, når vi taler om for 3 år siden, er den hej dumme anvendelse af web2py meget belastet sammenlignet til andre rammer, men jeg har ærligt talt ikke oplevet den dystre forskel i ydeevne mellem mine applikationer skrevet i web2py og django.

        Forresten, i web2py, hvis du kan skrive SQL for at udføre forespørgslerne direkte.

        Greetings.

  2.   urKh sagde han

    Den hurtigste webramme siger du, men du viser ikke noget eksempel og andre nøglefaktorer, såsom udvikling, produktivitet, dokumentation. Da django findes, ved jeg ikke, hvorfor det ser ud til at være en forbrydelse at ikke bruge dette: s

    1.    lajto sagde han

      - Der er allerede eksempler i dokumentationen. På hans BitBucket-side også: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Med hensyn til udvikling og produktivitet synes jeg personligt, at det er en god mulighed at opsummere det i "enkelhed". Hvad er enklere og lettere rammer endnu? Klar. Men ikke med så meget ydeevne.
      - Jeg har lagt linket til dokumentationen i artiklen xDDD.
      - Hvorfor jeg siger, at det er en forbrydelse, er fordi jeg mener, at en webside skal være så effektiv som muligt på alle måder. Som nævnt før er der rammer, der er lettere at bruge, men brug af wheezy.web er heller ikke C-programmering. Du skal bare prøve hårdere :).

      Hilsner ^^.

  3.   lajto sagde han

    Forresten, hvis nogen er dovne med at finde ud af og mener, at Wheezy Web kun vinder i anmodninger pr. Sekund ... Her er et par flere benchmarks:

    http://paste.desdelinux.net/5128 (spamfilteret til DesdeLinux Det vil ikke lade mig sætte så mange links)

    Jeg undskylder for ikke at have inkluderet dem tidligere. Jeg troede, at man var nok til at tegne nysgerrighed xD. Skål!

  4.   fenriz sagde han

    Indtil videre tilfreds med Django.

    1.    oclay sagde han

      Øh hver gang jeg læser disse ting, gør det mig vred, jeg troede, det kun var med php-rammer (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Hvis Django allerede har et samfund (ganske stort) og er en glimrende ramme, hvorfor ikke i stedet for at spilde tid på at genopfinde hjulet ikke deltage i django-teamet. @ Lajto i din samtale med forfatteren af ​​wheezy.web hvorfor spørger du ham ikke om du har aldrig tænkt på at blive medlem af django-holdet, for helvede.

      1.    lajto sagde han

        Selvom begge er webrammer, har de meget forskellige tilgange. Django er tung, den har meget kode, mens wheezy.web er let, er den forpligtet til enkelhed og optimering. Så vidt jeg ved, er wheezy.web den eneste ægte modulære Python-webramme (det vil sige, den opdeler al din kode i forskellige dele, der kan fungere uafhængigt). Det har mange egenskaber, der adskiller det fra resten.

        Hvorfor ikke deltage i Django, siger du? Fordi Django er designet med helt andre tilgange. Hvordan anvender du et modulært design på Django? Det bliver nødt til at blive omgjort praktisk taget fra bunden! Samme med mange andre problemer.

        Jeg forstår, at "bedre en enkelt ramme, der fungerer godt med et stort samfund" følelse, men det er ikke så let. Så du forstår, ved at skabe en overfladisk forening er Django som Debian og wheezy.web er som ... Arch? Gentoo? Det er bestemt et dårligt eksempel, men jeg tror, ​​at xDDD forstås.

        Hilsner!

  5.   Ulises sagde han

    Hvad med Lajto, hej, jeg laver en app, og jeg læser wheezy.web-dokumentationen, og det er den første python-webramme, som jeg forstod første gang 🙂 Ser du, jeg har ikke meget kendskab til netværk og internettet, men Jeg har en særlig attraktion til programmering.
    Kan du hjælpe mig med at ændre hejverdenen for at gøre den til en offentlig server? Måske er det et meget fjollet spørgsmål, undskyld, men jeg kan ikke finde i dokumentationen, hvordan man gør det.
    Et andet spørgsmål, 😉 i get- og post-metoderne, når jeg returnerer information, der ikke er en html-side, returnerer jeg information som den er? som en streng eller en liste eller en hvilken som helst datatype. Klienten en app i Android.

    1.    lajto sagde han

      Hej Ulises! Jeg er så glad for, at du tester wheezy.web: D.

      Om det, du kommenterer, anbefaler jeg stærkt, at du ikke monterer din egen struktur. Den ene Andriy rider er ganske god, så jeg anbefaler, at du følger den. I artiklen er der to links til Andriys blog, hvor han forklarer trinene med i18n og uden i18n. Hvis det er lidt forvirrende, forklarer jeg, hvordan man gør det uden i18n nedenfor:

      Åbn en terminal, og kør disse fire kommandoer (udskift "test-web" med navnet på den mappe, du ønsker til dit projekt):

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

      udpak hurtigstart-empty.zip

      mv hurtigstart-tom test-web

      rm quickstart-empty.zip

      Hvis du vil bruge PIL, skal du ændre filen setup.py og fjerne kommentar fra den tilsvarende kode. Når du er klar, skal du køre følgende tre kommandoer:

      web-test-cd

      lav env

      env / bin / easy_install uwsgi

      Din server er allerede monteret. Hvis du vil lave en hurtig benchmark for at se, om det fungerer, mens du er inde i mappen, kører du:

      lav testnæsdæksel benchmark

      Jeg anbefaler, at du går til "etc / development.ini" og ændrer "limit-as = 120" til "limit-as = 512". Dette er, hvor mange MB RAM uWSGI "spiser op", så det kan øges i fremtiden, hvis det er nødvendigt.

      Endelig, hver gang du vil åbne din server, ville det være nok at finde dig selv i din projektmappe og udføre:

      lav dinsgi

      På de andre spørgsmål ... Som standard er serveren programmeret til at køre på localhost. Hvis du vil offentliggøre det, fordi du allerede har det klar og vil bruge det på en fysisk server i produktion, skal du bare åbne "src / app.py" og finde følgende: make_server (", 8080, main). Den første parameter er en tom streng, ikke? Nå, der placerer du serverens IP. Den anden parameter er den port, du vil bruge, og som standard er 8080.

      Endelig hvad du siger om at returnere noget, der ikke er HTML, kan du selvfølgelig! I dokumentationen forklarer de, hvordan du returnerer alt: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      En hilsen! Alt hvad du fortæller mig;).

      1.    Ulises sagde han

        Mange tak Lajto, du klargjorde virkelig min tvivl, jeg havde prøvet med django, men som jeg nævnte for dig, er jeg ikke systemingeniør og django, jeg tror det bringer meget mere end hvad jeg havde brug for, brug wheezy.web til at teste en applikation i android og kommunikere det med en server. Noget meget simpelt, men ret hurtigt og praktisk. Hej et spørgsmål mere, for nylig så jeg, at der var et stort besvær med http / 2, hvordan ved jeg, hvilken protokol wheezy.web fungerer på? Kan jeg oprette en server, der bruger http / 2 i wheezy.web? Eller anbefale en bog, blog, tutorial, der er i blokke, der kan forklare hele spørgsmålet om netværk og kommunikation. Tak igen.

      2.    lajto sagde han

        Hej igen Ulises ^^.

        HTTP / 2 er meget nyligt og vil ikke blive taget i brug i endnu et år, så gider det ikke :). Hvis du vil have sikkerhed, skal du bruge HTTPS, og det er det.

        Jeg er ikke sikker på, hvad Wheezy Web bruger til HTTP, så jeg antager, at det vil være WSGI.

        En hilsen!

  6.   lajto sagde han

    Forresten lidt af ingenting. På nogle distroer vises en ADVARSEL-besked om .python-æg. Intet sker, hvis det vises, men hvis du finder det irriterende, kan du fjerne det med:

    chmod go = ~ / .python-æg

    Hilsner!

  7.   Diego sagde han

    Jeg bruger Django, men jeg vil kontrollere dokumentationen for at se, hvordan det fungerer. Tak fordi du delte. Skål

  8.   JD Villegas sagde han

    Det kan bruges fra windows !!!, er der en tutorial ??

    Tak

  9.   lalita sagde han

    Hej, vi har meget erfaring med Python. Det ser ud til, at de ror mod strømmen. Det bedste, der nogensinde er opfundet til dette sprog, er Django. De kan lave statistikker og konsultere hundreder af programmører fra hele verden, det giver dig mere end 80%, de fleste af dem er ikke forkert. Hvis de roer eller svømmer mod strømmen, drukner de før eller senere ...