[Programmering] Det raskeste Python-nettverket: wheezy.web

wheezy_web_logo

wheezy.web den har ingen logo; Jeg laget bildet i GIMP.

I lang tid sluttet jeg å programmere i Python, men det hindrer meg ikke i å dele teknologiene jeg kjenner med deg;). For en tid siden kom jeg inn på jakten på det "beste" nettrammeverket i Python, siden det jeg brukte (Web2Py) var djevelsk tregt. Forskningen min førte meg til wheezy.web; de som kjenner ham, har sikkert gjort det gjennom spektakulær referanseindeks laget av forfatteren på bloggen sin:

python-raskeste-web-rammeverk

Jeg vet, 25.000 XNUMX forespørsler per sekund sammenlignet med resten av rammeverket, er det et skikkelig pass. Jeg brukte meg selv wheezy.web en stund, og jeg må si at det er et virkelig kunstverk. Uansett hvor du ser på det: hastighet, enkelhet, sikkerhet ... Alt. Og over det er arbeidet til en enkelt person: Andriy Kornatskyy.

  • Jobber med Python 2, Python 3 y PYPY. Selv om 3 gir bedre ytelse, er det å foretrekke å fortsette å bruke 2 til 3 er moden nok.
  • Dens design er modulære, Slik at wheezy.web er flere ting: wheezy. mal, wheezy.html, wheezy.sikkerhet... Bruk delene du vil ha.
  • dokumentasjon enkel og lett å forstå.
  • Automatisk HTML-optimalisering (komprimerer den slik at den tar mindre opp uten å bruke eksterne verktøy).
  • Hvordan kan det være ellers, det er det gratis programvare og åpen kildekode ; D.
  • etc ...

På Andriys blogg er det gode opplæringsprogrammer for installere wheezy.web å tørke o med i18n (flere språk); forklarer også hvordan å bruke wheezy.web med Nginx. Ulempen med alle veiledningene hans er at antar at du bruker Debian, siden han ikke har testet på andre distros.

Hvis du bruker Fedora og du er interessert wheezy.web, du er heldig! Her er kommandoen som vil installere de nødvendige pakkene for å kunne følge veiledningene:

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

Opplæringen som Andriy tilbyr å installere wheezy.web med Nginx bruker den et skript designet spesielt for Debian, så du må gjøre det selv hvis du bruker et annet system. I mitt tilfelle er uWSGI nok for meg, så jeg har aldri prøvd det.

Sannheten er at eksisterende wheezy.web Jeg synes det er en forbrytelse å bruke et annet rammeverk, så hvis du jobber med Python, ta en titt på det i det minste! Den eneste ulempen som kan tilskrives den er at den ikke gir noe abstraksjon for å lette arbeidet med databaser (det trenger heller ikke, men det er folk som setter pris på det).

Og det er alt. En kort, men relevant artikkel. Jeg lover å ta med mer interessante teknologier! Vi sees ~.

Forresten, en nysgjerrighet, vet du hvorfor det kalles "wheezy"? Andriy er en fan av Debian. Jeg lar det være der;).


22 kommentarer, legg igjen dine

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Bruno cascio sa

    Ytelse er ikke den eneste faktoren. Sammenlignet med Django er det ganske uleselig. Og ærlig talt, 25000 forespørsler per sekund skal sees i aksjon, men jeg foretrekker å bo hos 15000 (django) for å skrive sunt, og resten av arbeidsdelegatet til infrastrukturen, som virkelig er den som skal motta eller ikke, 25000 forespørsler.

    Hilsen! Takk for dataene 🙂

    1.    Bruno cascio sa

      Det er unødvendig å si at jeg bruker gamle versjoner av andre rammer for å måle ...

      1.    lajto sa

        Referanseartikkelen er fra 2012. Han endret og utvidet den igjen i 2013, og han spesifiserte selv at de er fra det året: «Siste tilgjengelige versjoner per dette skrivet (15. mars 2013)»

    2.    lajto sa

      Ulovligheten du nevner, synes jeg ikke er så ille. Jeg forstår at det ofte blir søkt om enkel programmering, men jeg tror ikke det er store forskjeller. Jeg brukte Web2Py i et år, og jeg forsikrer deg om at det er en av de enkleste å bruke rammer tilgjengelig. Selvfølgelig er ytelsen på mange måter forferdelig ... I referanseartikkelen Massimo Di Pierro selv (skaper av Web2Py) har en debatt med Andriy der han til slutt innrømmer at det er mye å forbedre; snakket med Andriy på IRC, fortalte han meg "det er en allment akseptert filosofi om å sette alt i rammer og oppblåse dem med funksjoner selv om de fleste ikke blir brukt", og hvor rett han hadde ...

      Om det du sier om infrastrukturen deler jeg delvis det du sier; 10.000 forskjell er MYE, spesielt når vi snakker om det mest populære og modne rammeverket mot et veldig nylig og lite kjent. Min tilnærming er alltid å kombinere maksimal effektivitet med maksimal produktivitet, og jeg tror wheezy.web gjør det best. Jeg har brukt Web2Py (mest), Django, Pyramid og wheezy.web, og jeg forsikrer deg om at det er uten sidestykke. Når du tilpasser deg hans måte å gjøre ting på, løsner du deg ikke fra ham. De eneste fordelene med Django er det store samfunnet det har og ressursene som er over hele Internett; det vil si: letthet. wheezy.web er ganske nytt i sammenligning, og de færreste vet om det; hvis du går lett, bedre Web2Py eller Django xD.

      Jeg vil ikke utvide, men når vi snakker om forespørsler per sekund snakker vi om samtidighet. Hvis man søker samtidighet, er ikke Python det riktige språket. Det er det andre språk som Erlang eller Haskell er for (og hvis du skynder meg, Rust). Men nettopp av denne grunn er det imponerende at wheezy.web som opptar så lite kode, som en persons arbeid i fritiden og andre faktorer, har klart å oppnå en slik ytelse.

      Jeg forstår hva du sier om "sunn skriving", men du vet aldri hvor mye et prosjekt kan vokse på lang sikt. Ved å bruke mer effektive og samtidige verktøy, så vel som enkle (jeg hevder at wheezy.web er enkelt for ytelsen den har), sparer du penger og gjør prosjektet til å skalere lenger uten å endre språk. Til slutt ligger alt i pengene man må betale for serveren sin. Det er veldig kjente nettsteder i PHP, når PHP er forferdelig i ytelse ... Men hvordan løser du det problemet? Kjøpe bedre servere. Med den andre tilnærmingen løses den ved å programmere bedre og spare ressurser: P.

      Jeg beklager å ha utvidet meg så mye. Jeg brenner veldig lett for xDDD. Jubel!

      1.    Bruno cascio sa

        Jeg forsto perfekt hva du mener, men nettopp på grunn av det du nevner, hvis et prosjekt har en tendens til å vokse eller ikke, siden vi går med wheezy, er det ikke noe databaselag.

        Etter mitt synspunkt er det best å ikke gifte seg med noe språk. Hvis du vil ha samtidighet, kan du også bruke Node, motoren går i C.

        Det du nevner om ytelse, er ikke bare skalering vertikalt (tilfellet med PHP), Facebook tilbyr for eksempel HHVM, som jeg har lest (ikke testet) som forbedrer ytelsen med 50%, og dette er ikke å kjøpe servere. Enkelt sagt, PHP uten cache-lag og / eller andre måter å optimalisere er like "dårlig" som ethvert annet språk uten sistnevnte, og jeg mener dårlig å gi dem et navn, det er ikke bare "bedre programmering".

        Jubel! 🙂

      2.    lajto sa

        La oss se, det som ikke er, er et abstraksjonslag. Men du bruker tilsvarende bibliotek eller modul for å jobbe med databasen din og utenfor, det er ikke noe mer mysterium. Web2Py-abstraksjonslaget er for eksempel veldig enkelt, men ytelsen faller dramatisk, ettersom du ikke engang kan skrive optimalisert SQL. Alt er i Python; enkelt, men til gjengjeld for ytelse.

        Jeg kjenner HHVM, og det er nettopp derfor språk som PHP er forferdelig for moderne tid; hvis Facebook var i Haskell eller Erlang, hadde det ikke vært nødvendig å opprette HHVM. Bruk hurtigbuffer, komprimere filene som sendes og mottas osv. de er åpenbare aspekter ved enhver utvikling. Problemet er at verktøyet må måle seg :). Og det er verktøy som ikke gir det. Det beste eksemplet på dette er JavaScript ... I det tilfellet er det i det minste underverk som CoffeeScript, Dart, etc. som kompilerer til JS.

        Hilsener!

      3.    Bruno cascio sa

        Perfekt! 🙂

        Bare en ting, facebook hvis du bruker haskell, nærmere bestemt Haxl 🙂

      4.    Slutt sa

        Vel, jeg bruker web2py mye, jeg er enig i at det ikke er det raskeste rammeverket, men at referanseindeksen virker litt malplassert, enda mer når vi snakker om for 3 år siden, den hei dumme applikasjonen av web2py er veldig lastet til andre rammer, men jeg har ærlig talt ikke opplevd den avskyelige forskjellen i ytelse mellom applikasjonene mine skrevet i web2py og django.

        Forresten, i web2py hvis du kan skrive SQL for å utføre spørsmålene direkte.

        Hilsener.

  2.   urKh sa

    Det raskeste nettrammeverket du sier, men du viser ikke noe eksempel og andre viktige faktorer, som utvikling, produktivitet, dokumentasjon. Da django eksisterer, vet jeg ikke hvorfor det ser ut til å være en forbrytelse å ikke bruke dette: s

    1.    lajto sa

      - Det er allerede eksempler i dokumentasjonen. På BitBucket-siden hans også: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Når det gjelder utvikling og produktivitet, synes jeg personlig at å oppsummere det i "enkelhet" er et godt alternativ. Hva er enklere og enklere rammer ennå? Sikker. Men ikke med så mye ytelse.
      - Jeg har satt lenken til dokumentasjonen i artikkelen xDDD.
      - Hvorfor jeg sier at det er en forbrytelse, er fordi jeg mener at en webside skal være så effektiv som mulig, på alle måter. Som nevnt tidligere er det rammer som er enklere å bruke, men å bruke wheezy.web er heller ikke C-programmering. Du må bare prøve hardere :).

      Hilsen ^^.

  3.   lajto sa

    Forresten, i tilfelle noen er late med å finne ut av det og mener at Wheezy Web bare vinner i forespørsler per sekund ... Her er noen flere referanser:

    http://paste.desdelinux.net/5128 (el filtro de spam de DesdeLinux no me deja poner tantos links)

    Jeg beklager at jeg ikke har tatt med dem tidligere. Jeg trodde at en var nok til å tegne nysgjerrighet xD. Jubel!

  4.   fenriz sa

    Så langt fornøyd med Django.

    1.    oklay sa

      Øh hver gang jeg leser disse tingene, gjør det meg sint, jeg trodde det bare var med php-rammer (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Hvis Django allerede har et fellesskap (ganske stort) og er et utmerket rammeverk, hvorfor i stedet for å kaste bort tid på å finne på hjulet, ikke bli med i django-teamet. @ Lajto i samtalen din med forfatteren av wheezy.web, hvorfor ikke spør du ham? Hvis du aldri har tenkt på å bli med i django-teamet, faen det. Skål ..

      1.    lajto sa

        Selv om begge er nettrammer, har de veldig forskjellige tilnærminger. Django er tung, den har mye kode, mens wheezy.web er lett og er forpliktet til enkelhet og optimalisering. Så vidt jeg vet er wheezy.web det eneste virkelig modulære Python-nettverket (det vil si at det bryter all sin kode i forskjellige deler som kan fungere uavhengig). Den har mange egenskaper som skiller den fra resten.

        Hvorfor ikke bli med Django, sier du? Fordi Django er designet med helt andre tilnærminger. Hvordan bruker du et modulært design på Django? Det må omlegges praktisk talt fra bunnen av! Det samme med mange andre problemer.

        Jeg forstår at "bedre et enkelt rammeverk som fungerer godt med et stort fellesskap" -følelse, men det er ikke så lett. Så du forstår meg, ved å lage en overfladisk forening er Django som om det var Debian og wheezy.web som om det var ... Arch? Gentoo? Definitivt et dårlig eksempel, men jeg tror xDDD er forstått.

        Hilsener!

  5.   Ulises sa

    Hva med Lajto, hei jeg lager en app og jeg leser wheezy.web-dokumentasjonen, og det er det første python-nettverket jeg forsto første gang understood Ser du, jeg har ikke mye kunnskap om nettverk og nett, men jeg har en spesiell attraksjon for programmering.
    Kan du hjelpe meg med å endre hallo-verdenen for å gjøre den til en offentlig server? Kanskje det er et veldig dumt spørsmål, beklager, men jeg finner ikke i dokumentasjonen hvordan jeg gjør det.
    Et annet spørsmål, 😉 i get and post-metodene, siden jeg returnerer informasjon som ikke er en html-side, returnerer jeg informasjon som den er? som en streng eller en liste eller hvilken som helst type data. Klienten en app i android.

    1.    lajto sa

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

      Om det du kommenterer, anbefaler jeg på det sterkeste at du ikke monterer din egen struktur. Den som Andriy rir er ganske bra, så jeg anbefaler at du følger den. I artikkelen er det to lenker til Andriys blogg hvor han forklarer trinnene med i18n og uten i18n. Hvis det er litt forvirrende, forklarer jeg hvordan du gjør det uten i18n nedenfor:

      Åpne en terminal og kjør disse fire kommandoene (erstatt "test-web" med navnet på mappen du vil ha for prosjektet):

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

      pakke ut hurtigstart-empty.zip

      mv hurtigstart-tom testnett

      rm quickstart-empty.zip

      Hvis du vil bruke PIL, endrer du setup.py-filen og fjerner merknaden for den tilsvarende koden. Når du er klar, kjører du følgende tre kommandoer:

      web-test-cd

      lage env

      env / bin / easy_install uwsgi

      Serveren din er allerede montert. Hvis du vil gjøre en rask referanse for å se om det fungerer, i mappen, kjører du:

      lage test nesedeksel referanse

      Jeg anbefaler at du går til "etc / development.ini" og endrer "limit-as = 120" til "limit-as = 512". Dette er hvor mange MB RAM uWSGI vil "spise opp", så i fremtiden kan det økes om nødvendig.

      Til slutt, hver gang du vil åpne serveren din, ville det være nok å finne deg selv i prosjektmappen og utføre:

      lage uwsgi

      På de andre spørsmålene ... Som standard er serveren programmert til å kjøre på localhost. Hvis du vil gjøre det offentlig, fordi du allerede har det klart og vil bruke det på en fysisk server i produksjon, er det bare å åpne "src / app.py" og finne følgende: make_server (", 8080, main). Den første parameteren er en tom streng, ikke sant? Vel, der setter du IP-adressen til serveren din. Den andre parameteren er porten du vil bruke, som standard er 8080.

      Til slutt, det du sier om å returnere noe annet enn HTML, kan du selvfølgelig! I dokumentasjonen forklarer de hvordan du skal returnere alt: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      En hilsen! Alt du forteller meg;).

      1.    Ulises sa

        Tusen takk Lajto, du avklarte virkelig min tvil, jeg hadde prøvd med django, men som jeg sa til deg at jeg ikke er systemingeniør og django, tror jeg det gir mye mer enn jeg trengte, bruk wheezy.web for å teste et program i android og kommunisere det med en server. Noe veldig enkelt, men ganske raskt og praktisk. Hei et spørsmål til, nylig så jeg at det var stort oppstyr med http / 2, hvordan vet jeg hvilken protokoll wheezy.web fungerer på? Kan jeg lage en server som bruker http / 2 i wheezy.web? Eller anbefale meg en bok, blogg, opplæring som er i blokker som kan forklare hele saken om nettverk og kommunikasjon. Takk igjen.

      2.    lajto sa

        Hei igjen Ulises ^^.

        HTTP / 2 er veldig nylig og vil ikke bli tatt i bruk i 1 år til, så ikke bry deg med det :). Hvis du vil ha sikkerhet, bruk HTTPS og det er det.

        Jeg er ikke sikker på hva Wheezy Web bruker til HTTP, så jeg antar at det vil være WSGI.

        Hilsener!

  6.   lajto sa

    Forresten, litt av ingenting. På noen distroer vises en ADVARSEL-melding om .python-eggs. Ingenting skjer hvis det vises, men hvis du synes det er irriterende, kan du fjerne det med:

    chmod go = ~ / .python-egg

    Hilsener!

  7.   Diego sa

    Jeg bruker Django, men jeg vil sjekke dokumentasjonen for å se hvordan den fungerer. Takk for at du delte. Jubel

  8.   JD Villegas sa

    Den kan brukes fra windows !!!, er det en veiledning ??

    Takk

  9.   lalita sa

    Hei vi har mye erfaring med Python. Det ser ut til at de roer mot strømmen. Det beste som noensinne er oppfunnet for dette språket er Django. De kan lage statistikk og konsultere hundrevis av programmerere fra hele verden, det vil gi deg mer enn 80%, de fleste av dem tar ikke feil. Hvis de roer eller svømmer mot strømmen, vil de før eller siden drukne ...