[Programmazione] Il framework web Python piĆ¹ veloce: wheezy.web

wheezy_web_logo

wheezy.web non ha logo; Ho realizzato l'immagine in GIMP.

Per molto tempo ho smesso di programmare in Python, ma questo non mi impedisce di condividere con voi le tecnologie che conosco;). Qualche tempo fa sono entrato nella ricerca del "miglior" framework web in Python, visto che quello che ho usato (Web2Py) era dannatamente lento. La mia ricerca mi ha portato a wheezy.web; chi lo conosce lo ha sicuramente fatto attraverso il spettacolare benchmark realizzato dall'autore sul suo blog:

python-piĆ¹ veloce-web-framework

Lo so, 25.000 richieste al secondo rispetto al resto dei framework ĆØ un vero passaggio. Ho usato me stesso wheezy.web per un po 'e devo dire che ĆØ una vera opera d'arte. Ovunque lo guardi: velocitĆ , semplicitĆ , sicurezza ... Tutto. E soprattutto ĆØ opera di una sola persona: Andriy Kornatskyy.

  • Funziona con Python 2, Python 3 y pypy. Anche se 3 offre prestazioni migliori, ĆØ preferibile continuare a utilizzare 2 finchĆ© 3 non ĆØ sufficientemente maturo.
  • Il suo design ĆØ componibileQuindi wheezy.web sono piĆ¹ cose: wheezy.modello, wheezy.html, sibilante.sicurezza... Usa le parti che desideri.
  • documentazione semplice e di facile comprensione.
  • Ottimizzazione HTML automatica (lo comprime in modo che occupi meno senza utilizzare strumenti esterni).
  • Come potrebbe essere altrimenti, lo ĆØ software gratuito e open source ; D.
  • ecc ...

Sul blog di Andriy ci sono ottimi tutorial per installare wheezy.web asciugare o con i18n (multilingue); spiega anche come usare wheezy.web con Nginx. Lo svantaggio di tutti i suoi tutorial ĆØ questo supponi di usare Debian, dal momento che non ha testato su altre distribuzioni.

Se usi Fedora e sei interessato wheezy.web, sei fortunato! Ecco il comando che installerĆ  i pacchetti necessari per poter seguire i suoi tutorial:

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

Il tutorial che Andriy offre per l'installazione wheezy.web con Nginx utilizza uno script progettato specificamente per Debian, quindi dovrai farlo da solo se usi un sistema diverso. Nel mio caso, uWSGI ĆØ sufficiente per me, quindi non l'ho mai provato.

La veritĆ  ĆØ che esiste wheezy.web Trovo un crimine usare un altro framework, quindi se lavori con Python, dai un'occhiata almeno! L'unico svantaggio che puĆ² essere attribuito ĆØ che non include alcun livello di astrazione per facilitare il lavoro con i database (nĆ© ĆØ necessario, ma ci sono persone che lo apprezzano).

E questo ĆØ tutto. Un articolo breve ma pertinente. Prometto di portare tecnologie piĆ¹ interessanti! Ci vediamo ~.

A proposito, una curiositĆ , sai perchĆ© si chiama "wheezy"? Andriy ĆØ un fan di Debian. Lo lascio lƬ;).


Lascia un tuo commento

L'indirizzo email non verrĆ  pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ɓngel GatĆ³n
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Bruno cascio suddetto

    Le prestazioni non sono l'unico fattore. Rispetto a Django, ĆØ abbastanza illeggibile. E onestamente, le 25000 richieste al secondo dovrebbero essere viste in azione, ma preferisco restare con 15000 (django) per scrivere in modo sano, e il resto del lavoro delegato all'infrastruttura, che ĆØ VERAMENTE quella che riceverĆ  o no, 25000 richieste.

    Saluti! Grazie per i dati šŸ™‚

    1.    Bruno cascio suddetto

      Inutile dire che per il benchmark utilizzo vecchie versioni di altri framework ...

      1.    lajto suddetto

        L'articolo di riferimento ĆØ del 2012. Lo ha modificato e ampliato nuovamente nel 2013 e lui stesso ha specificato che sono di quell'anno: Ā«Ultime versioni disponibili al momento della stesura di questo documento (15 marzo 2013)Ā»

    2.    lajto suddetto

      L'illeggibilitĆ  di cui parli non credo sia poi cosƬ grave. Capisco che la facilitĆ  di programmazione sia spesso ricercata, ma non credo che ci siano differenze davvero considerevoli. Ho usato Web2Py per un anno e ti assicuro che ĆØ uno dei framework piĆ¹ facili da usare disponibili. Certo, le sue prestazioni sono terribili sotto molti aspetti ... Nell'articolo di benchmark lo stesso Massimo Di Pierro (creatore di Web2Py) ha un dibattito con Andriy in cui ammette finalmente che c'ĆØ molto da migliorare; parlando con Andriy su IRC, mi ha detto che "esiste una filosofia ampiamente accettata di inserire tutto in framework e gonfiarlo con funzionalitĆ  anche se la maggior parte non viene utilizzata", e quanto aveva ragione ...

      Di quello che dici sull'infrastruttura, condivido parzialmente quello che dici; 10.000 di differenza sono MOLTE, soprattutto quando parliamo del framework piĆ¹ popolare e maturo rispetto a uno molto recente e poco conosciuto. Il mio approccio ĆØ sempre quello di combinare la massima efficienza con la massima produttivitĆ , e penso che wheezy.web lo faccia meglio. Ho usato Web2Py (il piĆ¹), Django, Pyramid e wheezy.web e ti assicuro che non ha rivali. Una volta che ti adatti al suo modo di fare, non ti distacchi da lui. Gli unici vantaggi di Django sono la grande comunitĆ  che ha e le risorse che sono ovunque su Internet; vale a dire: facilitĆ . wheezy.web ĆØ abbastanza nuovo in confronto e pochissime persone lo sanno; se vai piano, meglio Web2Py o Django xD.

      Non voglio espandere, ma quando parliamo di richieste al secondo parliamo di concorrenza. Se si cerca la concorrenza, Python non ĆØ il linguaggio appropriato. Questo ĆØ ciĆ² che servono altre lingue come Erlang o Haskell (e se mi fai fretta, Rust). Ma proprio per questo ĆØ impressionante che wheezy.web occupando cosƬ poco codice, essendo il lavoro di una persona nel tempo libero e altri fattori, sia riuscito a raggiungere tali prestazioni.

      Capisco cosa dici di "scrittura sana", ma non sai mai quanto un progetto puĆ² crescere a lungo termine. Utilizzando strumenti piĆ¹ efficienti e simultanei, oltre che semplici (ritengo che wheezy.web sia semplice per le prestazioni che ha), risparmia denaro e fai scalare il progetto piĆ¹ a lungo senza cambiare lingua. Alla fine tutto ĆØ nei soldi che uno deve pagare per il suo server. Ci sono siti web molto famosi in PHP, quando PHP ha prestazioni orribili ... Ma come si risolve questo problema? Acquisto di server migliori. Con l'altro approccio, si risolve programmando meglio e risparmiando risorse: P.

      Mi dispiace di essermi esteso cosƬ tanto. Sono molto facilmente appassionato di xDDD. Saluti!

      1.    Bruno cascio suddetto

        Ho capito perfettamente cosa intendi, ma proprio per quello che dici, se un progetto tende a crescere oppure no, visto che andiamo con wheezy non esiste un livello di database.

        Dal mio punto di vista, ĆØ meglio non sposare nessuna lingua. Se vuoi la concorrenza puoi usare anche Node, il suo motore funziona in C.

        Quello che dici delle prestazioni, non ĆØ solo il ridimensionamento verticale (nel caso di PHP), Facebook ad esempio offre HHVM, che ho letto (non testato) che migliora le prestazioni del 50% e questo non ĆØ l'acquisto di server. Il semplice PHP senza livelli di cache e / o altri modi di ottimizzazione ĆØ "cattivo" come qualsiasi altro linguaggio senza quest'ultimo, e intendo dire male per dargli un nome, non ĆØ solo "programmazione migliore".

        Saluti! šŸ™‚

      2.    lajto suddetto

        Vediamo, quello che non c'ĆØ ĆØ uno strato di astrazione. Ma usi la libreria o il modulo corrispondente per lavorare con il tuo database e al di fuori non c'ĆØ piĆ¹ mistero. Il livello di astrazione Web2Py ĆØ molto semplice, ad esempio, ma le prestazioni diminuiscono drasticamente poichĆ© non ĆØ possibile nemmeno scrivere SQL ottimizzato. Tutto ĆØ in Python; facile, ma in cambio di prestazioni.

        Conosco HHVM ed ĆØ proprio per questo che linguaggi come PHP sono terribili per i tempi moderni; se Facebook fosse in Haskell o Erlang non sarebbe stato necessario creare HHVM. Usa la cache, comprimi i file inviati e ricevuti, ecc. sono aspetti ovvi di qualsiasi sviluppo. Il problema ĆØ che lo strumento deve essere all'altezza :). E ci sono strumenti che non lo forniscono. Il miglior esempio di questo ĆØ JavaScript ... In quel caso almeno ci sono meraviglie come CoffeeScript, Dart, ecc. che si compila in JS.

        Saluti!

      3.    Bruno cascio suddetto

        Perfetto! šŸ™‚

        Solo una cosa, facebook se usi haskell, piĆ¹ precisamente Haxl šŸ™‚

      4.    Cessare suddetto

        Bene, io uso molto web2py, sono d'accordo che non sia il framework piĆ¹ veloce, ma quel benchmark sembra un po 'fuori luogo, ancora di piĆ¹ quando si parla di 3 anni fa, l'applicazione hello dumb di web2py ĆØ molto caricata rispetto ad altri framework, ma onestamente non ho sperimentato quell'abissale differenza di prestazioni tra le mie applicazioni scritte in web2py e django.

        A proposito, in web2py puoi scrivere SQL per eseguire direttamente le query.

        Saluti.

  2.   uKh suddetto

    Il framework web piĆ¹ veloce che dici, ma non mostri alcun esempio e altri fattori chiave, come sviluppo, produttivitĆ , documentazione. Django esistente, non so perchĆ© sembra essere un crimine non usare questo: p

    1.    lajto suddetto

      - Ci sono giĆ  esempi nella documentazione. Sulla sua pagina BitBucket anche: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Riguardo allo sviluppo e alla produttivitĆ , personalmente penso che riassumerlo in "semplicitĆ " sia una buona opzione. Quali sono ancora i framework piĆ¹ semplici e facili? Sicuro. Ma non con cosƬ tante prestazioni.
      - Ho messo il link alla documentazione nell'articolo xDDD.
      - PerchĆ© dico che ĆØ un crimine ĆØ perchĆ© credo che una pagina web dovrebbe essere il piĆ¹ efficiente possibile, in ogni modo. Come ho detto prima, ci sono framework che sono piĆ¹ facili da usare, ma usare wheezy.web non ĆØ nemmeno programmare in C. Devi solo sforzarti di piĆ¹ :).

      Saluti ^^.

  3.   lajto suddetto

    A proposito, nel caso qualcuno sia pigro nello scoprirlo e pensi che Wheezy Web vinca solo in richieste al secondo ... Ecco alcuni altri benchmark:

    http://paste.desdelinux.net/5128 (il filtro antispam di DesdeLinux Non mi permetterƠ di inserire cosƬ tanti link)

    Mi scuso per non averli inseriti in precedenza. Pensavo che ne bastasse uno per attirare la curiositĆ  xD. Saluti!

  4.   fenriz suddetto

    Finora felice con Django.

    1.    argilla suddetto

      Ehh ogni volta che leggo queste cose mi fa arrabbiare, pensavo fosse solo con framework php (Symfony, Yii, CondeIgniter, Phalcon ā€¦ā€¦ā€¦ wdf !!). Se Django ha giĆ  una community (abbastanza numerosa) ed ĆØ un ottimo framework perchĆØ invece di perdere tempo a reinventare la ruota non entrare a far parte del team di django. @ Lajto nella tua conversazione con l'autore di wheezy.web perchĆØ non gli chiedi Se non hai mai pensato di entrare a far parte del team di django, dannazione. Saluti ..

      1.    lajto suddetto

        Sebbene entrambi siano framework web, hanno approcci molto diversi. Django ĆØ pesante, ha molto codice, mentre wheezy.web ĆØ leggero e punta alla semplicitĆ  e all'ottimizzazione. Per quanto ne so, wheezy.web ĆØ l'unico framework web Python veramente modulare (cioĆØ, divide tutto il tuo codice in parti diverse che possono funzionare indipendentemente). Ha molte caratteristiche che lo differenziano dal resto.

        PerchĆ© non unirti a Django, dici? PerchĆ© Django ĆØ stato progettato con approcci completamente diversi. Come applichi un design modulare a Django? Dovrebbe essere rifatto praticamente da zero! Lo stesso con molti altri problemi.

        Capisco che "meglio un unico framework che funzioni bene con una grande comunitĆ ", ma non ĆØ cosƬ facile. Solo cosƬ capisci, facendo un'associazione superficiale, Django ĆØ come se fosse Debian e wheezy.web come se fosseā€¦ Arch? Gentoo? ƈ sicuramente un cattivo esempio, ma penso che xDDD sia capito.

        Saluti!

  5.   Ulises suddetto

    Che ne dici di Lajto, sto creando un'app e ho letto la documentazione di wheezy.web ed ĆØ il primo framework web Python che ho capito la prima volta šŸ™‚ Vedi, non ho molta conoscenza di reti e web, ma io hanno un'attrazione speciale per la programmazione.
    Puoi aiutarmi a modificare il mondo di Hello per renderlo un server pubblico? Forse ĆØ una domanda molto sciocca, scusa, ma non riesco a trovare nella documentazione come farlo.
    Un'altra domanda, šŸ˜‰ nei metodi get e post, poichĆ© restituisco informazioni che non sono una pagina html, restituisco le informazioni cosƬ come sono? come una stringa o un elenco o qualsiasi tipo di dato. Il client ĆØ un'app in Android.

    1.    lajto suddetto

      Ciao Ulises! Sono cosƬ felice che tu stia testando wheezy.web: D.

      Riguardo a quello che commentate, vi consiglio vivamente di non montare una vostra struttura. Quello che Andriy cavalca ĆØ abbastanza buono, quindi ti consiglio di seguirlo. Nell'articolo ci sono due link al blog di Andriy dove spiega i passaggi con i18n e senza i18n. Nel caso in cui sia un po 'di confusione, ti spiego come farlo senza i18n di seguito:

      Apri un terminale ed esegui questi quattro comandi (sostituisci "test-web" con il nome della cartella che desideri per il tuo progetto):

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

      decomprimere quickstart-empty.zip

      mv avvio rapido-vuoto test-web

      rm quickstart-vuoto.zip

      Se vuoi usare PIL, modifica il file setup.py e rimuovi il commento dal codice corrispondente. Quando sei pronto, esegui i seguenti tre comandi:

      cd di test web

      fare invidia

      env / bin / easy_install uwsgi

      Il tuo server ĆØ giĆ  montato. Se vuoi fare un rapido benchmark per vedere se funziona, essendo all'interno della cartella, esegui:

      fare test di riferimento per la copertura del naso

      Ti consiglio di andare su "etc / development.ini" e cambiare "limit-as = 120" in "limit-as = 512". Questo ĆØ il numero di MB di RAM che uWSGI "consumerĆ ", quindi potrebbe essere aumentato in futuro se necessario.

      Infine, ogni volta che vuoi aprire il tuo server, basterĆ  individuarti nella cartella del tuo progetto ed eseguire:

      fare uwsgi

      Sulle altre domande ... Per impostazione predefinita, il server ĆØ programmato per funzionare su localhost. Se vuoi renderlo pubblico, perchĆ© lo hai giĆ  pronto e vuoi usarlo su un server fisico in produzione, apri semplicemente "src / app.py" e individua quanto segue: make_server (", 8080, main). Il primo parametro ĆØ una stringa vuota, giusto? Bene, lƬ metti l'IP del tuo server. Il secondo parametro ĆØ la porta che si desidera utilizzare, che per impostazione predefinita ĆØ 8080.

      Infine, quello che dici sulla restituzione di qualcosa di diverso dall'HTML, ovviamente puoi! Nella documentazione spiegano come restituire tutto: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Un saluto! Qualunque cosa mi dici;).

      1.    Ulises suddetto

        Grazie mille Lajto, hai davvero chiarito i miei dubbi, avevo provato con django ma come ti ho detto non sono un ingegnere di sistemi e django penso che porti molto piĆ¹ del necessario, usa wheezy.web per testare un'applicazione in android e comunicarlo con un server. Qualcosa di molto semplice ma abbastanza veloce e pratico. Ehi ancora una domanda, di recente ho visto che c'era un gran polverone con http / 2, come faccio a sapere su quale protocollo funziona wheezy.web? Posso creare un server che utilizza http / 2 in wheezy.web? Oppure raccomandami un libro, un blog, un tutorial a blocchi che possa spiegare l'intera faccenda delle reti e delle comunicazioni. Grazie ancora.

      2.    lajto suddetto

        Ciao di nuovo Ulises ^^.

        HTTP / 2 ĆØ molto recente e non verrĆ  adottato seriamente per un altro anno, quindi non preoccuparti :). Se vuoi sicurezza, usa HTTPS e il gioco ĆØ fatto.

        Non sono sicuro di cosa Wheezy Web utilizzi per HTTP, quindi presumo che sarĆ  WSGI.

        Saluti!

  6.   lajto suddetto

    A proposito, un po 'di niente. Su alcune distribuzioni viene visualizzato un messaggio di ATTENZIONE su .python-eggs. Non succede nulla se appare, ma se trovi fastidioso puoi rimuoverlo con:

    chmod go = ~ / .python-eggs

    Saluti!

  7.   Diego suddetto

    Sto usando Django, ma controllerĆ² la documentazione per vedere come funziona. Grazie per la condivisione. Saluti

  8.   JD Villegas suddetto

    PuĆ² essere utilizzato da Windows !!!, esiste un tutorial ??

    grazie

  9.   lalita suddetto

    Ciao, abbiamo molta esperienza con Python. Mi sembra che stiano remando controcorrente. La cosa migliore mai inventata per questa lingua ĆØ Django. Possono fare una statistica e consultare centinaia di programmatori da tutto il mondo, ti darĆ  piĆ¹ dell'80%, la maggior parte di loro non ha torto. Se remano o nuotano controcorrente, prima o poi annegheranno ...