[Programmation] Le framework Web Python le plus rapide: wheezy.web

wheezy_web_logo

wheezy.web il n'a pas de logo; J'ai fait l'image dans GIMP.

J'ai arrêté de programmer en Python depuis longtemps, mais cela ne m'empêche pas de partager les technologies que je connais avec vous;). Il y a quelque temps, je me suis lancé dans la recherche du «meilleur» framework web en Python, car celui que j'utilisais (Web2Py) était diaboliquement lent. Mes recherches m'ont conduit à wheezy.web; ceux qui le connaissent l'ont sûrement fait grâce au benchmark spectaculaire réalisé par l'auteur sur son blog:

python-plus rapide-web-framework

Je sais, 25.000 XNUMX requêtes par seconde par rapport au reste des frameworks c'est une vraie passe. Je me suis utilisé wheezy.web pendant un moment et je dois dire que c'est une véritable œuvre d'art. Où que vous le regardiez: rapidité, simplicité, sécurité ... Tout. Et au-dessus, c'est le travail d'une seule personne: Andriy Kornatskyy.

  • Fonctionne avec Python 2, Python 3 y Python. Même si 3 donne de meilleures performances, il est préférable de continuer à utiliser 2 jusqu'à ce que 3 soit suffisamment mature.
  • Son design est applicationDonc wheezy.web sont plus de choses: modèle.Wheezy, sifflant.html, wheezy.sécurité… Utilisez les pièces que vous voulez.
  • documentation Simple et facile à comprendre.
  • Optimisation HTML automatique (le compresse pour qu'il prenne moins sans utiliser d'outils externes).
  • Comment pourrait-il en être autrement, c'est logiciel libre et open source ; RÉ.
  • etc ...

Sur le blog d'Andriy, il y a d'excellents tutoriels pour installer wheezy.web sécher o avec i18n (plusieurs langues); explique aussi comment utiliser wheezy.web avec Nginx. L'inconvénient de tous ses tutoriels est que supposons que vous utilisez Debian, car il n'a pas testé sur d'autres distributions.

Si vous utilisez Fedora et tu es intéressé wheezy.web, tu es chanceux! Voici la commande qui installera les packages nécessaires pour pouvoir suivre ses tutoriels:

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

Le tutoriel qu'Andriy propose d'installer wheezy.web avec Nginx, il utilise un script spécialement conçu pour Debian, vous devrez donc le faire vous-même si vous utilisez un système différent. Dans mon cas, uWSGI me suffit, donc je ne l'ai jamais essayé.

La vérité est qu'existant wheezy.web Je trouve que c'est un crime d'utiliser un autre framework, donc si vous travaillez avec Python, jetez-y au moins un coup d'œil! Le seul inconvénient qui peut lui être attribué est qu'il n'inclut aucune couche d'abstraction pour faciliter le travail avec les bases de données (ce n'est pas nécessaire non plus, mais il y a des gens qui l'apprécient).

Et c'est tout. Un article court mais pertinent. Je promets d'apporter des technologies plus intéressantes! A bientôt ~.

Au fait, une curiosité, savez-vous pourquoi ça s'appelle "wheezy"? Andriy est un fan de Debian. Je le laisse là;).


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Bruno cascio dit

    La performance n'est pas le seul facteur. Comparé à Django, il est assez illisible. Et honnêtement, les 25000 requêtes par seconde devraient être vues en action, mais je préfère rester avec 15000 (django) pour écrire sainement, et le reste du travail délégué à l'infrastructure, qui est VRAIMENT celle qui va recevoir ou non, 25000 demandes.

    Cordialement! Merci pour les données 🙂

    1.    Bruno cascio dit

      Inutile de dire que pour comparer j'utilise d'anciennes versions d'autres frameworks ...

      1.    lajto dit

        L'article de référence date de 2012. Il l'a modifié et élargi à nouveau en 2013 et il a lui-même précisé qu'ils datent de cette année: «Dernières versions disponibles à ce jour (15 mars 2013)»

    2.    lajto dit

      Je ne pense pas que l’illisibilité que vous mentionnez soit si mauvaise. Je comprends que la facilité de programmation est souvent recherchée, mais je ne pense pas qu'il y ait vraiment de différences considérables. J'ai utilisé Web2Py pendant un an, et je vous assure que c'est l'un des frameworks les plus faciles à utiliser disponibles. Bien sûr, ses performances sont terribles à bien des égards ... Dans l'article de référence, Massimo Di Pierro lui-même (créateur de Web2Py) a un débat avec Andriy dans lequel il admet finalement qu'il y a beaucoup à améliorer; parlant avec Andriy sur IRC, il m'a dit "il y a une philosophie largement acceptée de tout mettre dans des frameworks et de les gonfler avec des fonctionnalités même si la plupart ne sont pas utilisées", et à quel point il avait raison ...

      À propos de ce que vous dites sur l'infrastructure, je partage en partie ce que vous dites; Une différence de 10.000, c'est BEAUCOUP, surtout quand on parle du framework le plus populaire et le plus mature par rapport à un framework très récent et peu connu. Mon approche est toujours de combiner une efficacité maximale avec une productivité maximale, et je pense que wheezy.web fait le mieux. J'ai utilisé Web2Py (le plus), Django, Pyramid et wheezy.web et je vous assure que c'est sans égal. Une fois que vous vous êtes adapté à sa façon de faire, vous ne vous détachez pas de lui. Les seuls avantages de Django sont la grande communauté dont il dispose et les ressources qui se trouvent partout sur Internet; c'est-à-dire: facilité. wheezy.web est relativement nouveau en comparaison, et très peu de gens le savent; si vous y allez doucement, mieux vaut Web2Py ou Django xD.

      Je ne veux pas développer, mais quand on parle de demandes par seconde, on parle de concurrence. Si la concurrence est recherchée, Python n'est pas le langage approprié. C'est à cela que servent d'autres langages comme Erlang ou Haskell (et si vous me dépêchez, Rust). Mais précisément pour cette raison, il est impressionnant que wheezy.web occupant si peu de code, étant le travail d'une personne pendant son temps libre et d'autres facteurs, ait réussi à atteindre de telles performances.

      Je comprends ce que vous dites de «l'écriture saine», mais vous ne savez jamais à quel point un projet peut évoluer à long terme. En utilisant des outils plus efficaces et simultanés, ainsi que simples (je maintiens que wheezy.web est simple pour les performances dont il dispose), économisez de l'argent et augmentez l'échelle du projet plus longtemps sans changer de langue. En fin de compte, tout est dans l'argent que vous devez payer votre serveur. Il existe des sites Web très connus en PHP, quand PHP est horrible en termes de performances ... Mais comment résolvez-vous ce problème? Acheter de meilleurs serveurs. Avec l'autre approche, il est résolu en programmant mieux et en économisant les ressources: P.

      Je suis désolé de m'être autant étendu. Je suis très facilement passionné par xDDD. Cordialement!

      1.    Bruno cascio dit

        J'ai parfaitement compris ce que vous entendez, mais précisément à cause de ce que vous évoquez, si un projet a tendance à grandir ou non, puisque nous allons avec wheezy il n'y a pas de couche de base de données.

        À mon avis, il vaut mieux ne pas épouser aucune langue. Si vous voulez la concurrence, vous pouvez également utiliser Node, son moteur s'exécute en C.

        Ce que vous mentionnez à propos des performances, ce n'est pas seulement la mise à l'échelle verticale (le cas de PHP), Facebook par exemple propose HHVM, que j'ai lu (non testé) qui améliore les performances de 50% et ce n'est pas l'achat de serveurs. En termes simples, PHP sans couches de cache et / ou autres moyens d'optimisation est aussi «mauvais» que n'importe quel autre langage sans ce dernier, et je veux dire mauvais de leur donner un nom, ce n'est pas seulement une «meilleure programmation».

        À votre santé! 🙂

      2.    lajto dit

        Voyons, ce qu'il n'y a pas, c'est une couche d'abstraction. Mais vous utilisez la bibliothèque ou le module correspondant pour travailler avec votre base de données et à l'extérieur, il n'y a plus de mystère. La couche d'abstraction Web2Py est très simple, par exemple, mais les performances diminuent considérablement car vous ne pouvez même pas écrire du SQL optimisé. Tout est en Python; facile, mais en échange de la performance.

        Je connais HHVM et c'est précisément pourquoi des langages comme PHP sont terribles pour les temps modernes; si Facebook était dans Haskell ou Erlang, il n'aurait pas été nécessaire de créer HHVM. Utilisez le cache, compressez les fichiers envoyés et reçus, etc. ce sont des aspects évidents de tout développement. Le problème est que l'outil doit être à la hauteur :). Et il y a des outils qui ne le donnent pas. Le meilleur exemple en est JavaScript ... Dans ce cas au moins, il y a des merveilles comme CoffeeScript, Dart, etc. qui compilent en JS.

        Salutations!

      3.    Bruno cascio dit

        Parfait! 🙂

        Juste une chose, facebook si vous utilisez haskell, plus précisément Haxl 🙂

      4.    Cesser dit

        Bon, j'utilise beaucoup web2py, je suis d'accord que ce n'est pas le framework le plus rapide, mais ce benchmark semble un peu hors de propos, d'autant plus quand on parle d'il y a 3 ans, l'application hello dumb de web2py est très chargée par rapport à d'autres frameworks, mais honnêtement, je n'ai pas connu cette différence de performances abyssale entre mes applications écrites en web2py et django.

        En passant, dans web2py si vous pouvez écrire du SQL pour effectuer les requêtes directement.

        Salutations.

  2.   urKh dit

    Le framework Web le plus rapide que vous dites, mais vous ne montrez pas d'exemples et d'autres facteurs clés, tels que le développement, la productivité, la documentation. Avec django existant, je ne sais pas pourquoi cela semble être un crime de ne pas utiliser ceci: p

    1.    lajto dit

      - Il existe déjà des exemples dans la documentation. Sur sa page BitBucket également: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Sur le développement et la productivité, je pense personnellement que le résumer en «simplicité» est une bonne option. Quels sont encore les frameworks plus simples et plus faciles? Sûr. Mais pas avec autant de performances.
      - J'ai mis le lien vers la documentation dans l'article xDDD.
      - Pourquoi je dis que c'est un crime, c'est parce que je pense qu'une page Web doit être aussi efficace que possible, à tous les égards. Comme je l'ai mentionné précédemment, il existe des frameworks plus faciles à utiliser, mais utiliser wheezy.web n'est pas non plus de la programmation C. Vous devez simplement essayer plus fort :).

      Salutations ^^.

  3.   lajto dit

    D'ailleurs, au cas où quelqu'un serait paresseux pour le découvrir et penserait que Wheezy Web ne gagne que des requêtes par seconde ... Voici quelques repères supplémentaires:

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

    Je m'excuse de ne pas les avoir inclus auparavant. Je pensais que celui-là suffisait à attirer la curiosité xD. À votre santé!

  4.   Fenris dit

    Jusqu'ici content de Django.

    1.    oclay dit

      Ehh à chaque fois que je lis ces trucs ça me met en colère, je pensais que c'était uniquement avec des frameworks php (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Si Django a déjà une communauté (assez grande) et est un excellent framework pourquoi au lieu de perdre du temps à réinventer la roue ne rejoignez pas l'équipe django. @ Lajto dans votre conversation avec l'auteur de wheezy.web pourquoi ne lui demandez-vous pas si vous n'avez jamais pensé à rejoindre l'équipe django, bon sang.

      1.    lajto dit

        Bien que les deux soient des frameworks Web, ils ont des approches très différentes. Django est lourd, il a beaucoup de code, tandis que wheezy.web est léger, il est engagé dans la simplicité et l'optimisation. À ma connaissance, wheezy.web est le seul framework Web Python véritablement modulaire (c'est-à-dire qu'il divise tout votre code en différentes parties qui peuvent fonctionner indépendamment). Il possède de nombreuses caractéristiques qui le différencient des autres.

        Pourquoi ne pas rejoindre Django, dites-vous? Parce que Django a été conçu avec des approches complètement différentes. Comment appliquer une conception modulaire à Django? Il faudrait le refaire pratiquement à partir de zéro! La même chose avec de nombreux autres problèmes.

        Je comprends que «mieux un cadre unique qui fonctionne bien avec une grande communauté», mais ce n'est pas si facile. Juste pour que vous compreniez, en faisant une association superficielle, Django est comme si c'était Debian et wheezy.web comme si c'était… Arch? Gentoo? C'est certainement un mauvais exemple, mais je pense que xDDD est compris.

        Salutations!

  5.   Ulises dit

    Que diriez-vous de Lajto, hé je crée une application et j'ai lu la documentation wheezy.web et c'est le premier framework web python que j'ai compris la première fois 🙂 Vous voyez, je n'ai pas beaucoup de connaissances sur les réseaux et le web, mais je ont une attirance particulière pour la programmation.
    Pourriez-vous m'aider à modifier le Hello World pour en faire un serveur public? C'est peut-être une question très idiote, désolé, mais je ne trouve pas dans la documentation comment faire.
    Autre question, 😉 dans les méthodes get et post, puisque je renvoie des informations autres qu'une page html, est-ce que je retourne les informations telles quelles? sous forme de chaîne ou de liste ou de tout type de données. Le client une application sous Android.

    1.    lajto dit

      Bonjour Ulises! Je suis si heureux que vous testiez wheezy.web: D.

      À propos de ce que vous commentez, je vous recommande fortement de ne pas monter votre propre structure. Celui que monte Andriy est assez bon, je vous recommande donc de le suivre. Dans l'article, il y a deux liens vers le blog d'Andriy où il explique les étapes avec i18n et sans i18n. Au cas où c'est un peu déroutant, je vais vous expliquer comment le faire sans i18n ci-dessous:

      Ouvrez un terminal et exécutez ces quatre commandes (remplacez "test-web" par le nom du dossier que vous souhaitez pour votre projet):

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

      décompressez quickstart-empty.zip

      mv quickstart-vide test-web

      rm quickstart-empty.zip

      Si vous souhaitez utiliser PIL, modifiez le fichier setup.py et décommentez le code correspondant. Une fois que vous êtes prêt, exécutez les trois commandes suivantes:

      web-test-cd

      faire env

      env / bin / easy_install uwsgi

      Votre serveur est déjà monté. Si vous voulez faire un test rapide pour voir si cela fonctionne, étant à l'intérieur du dossier, vous exécutez:

      faire un test de couverture de nez de référence

      Je vous recommande d'aller dans "etc / development.ini" et de changer "limit-as = 120" en "limit-as = 512". C'est le nombre de Mo de RAM que l'uWSGI "consommera", donc il pourra être augmenté ultérieurement si nécessaire.

      Enfin, à chaque fois que vous souhaitez ouvrir votre serveur, il suffirait de vous localiser dans votre dossier projet et d'exécuter:

      faire uwsgi

      Sur les autres questions ... Par défaut, le serveur est programmé pour s'exécuter sur localhost. Si vous voulez le rendre public, parce que vous l'avez déjà prêt et que vous voulez l'utiliser sur un serveur physique en production, ouvrez simplement "src / app.py" et localisez ce qui suit: make_server (", 8080, main). Le premier paramètre est une chaîne vide, non? Eh bien, là vous mettez l'adresse IP de votre serveur. Le deuxième paramètre est le port que vous souhaitez utiliser, qui est par défaut 8080.

      Enfin, ce que vous dites à propos du renvoi autre chose que HTML, bien sûr, vous le pouvez! Dans la documentation, ils expliquent comment tout retourner: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Salutations! Tout ce que vous me dites;).

      1.    Ulises dit

        Merci beaucoup Lajto, tu as vraiment clarifié mes doutes, j'avais essayé avec django mais comme je te l'ai dit je ne suis pas un ingénieur système et django je pense que ça apporte beaucoup plus que ce dont j'avais besoin, utilisez wheezy.web pour tester une application sur android et communiquez-le avec un serveur. Quelque chose de très simple mais assez rapide et pratique. Hé encore une question, j'ai récemment vu qu'il y avait un gros problème avec http / 2, comment savoir sur quel protocole fonctionne wheezy.web? Puis-je créer un serveur qui utilise http / 2 dans wheezy.web? Ou recommandez-moi un livre, un blog, un tutoriel en blocs qui peuvent expliquer toute la question des réseaux et des communications. Encore merci.

      2.    lajto dit

        Bonjour encore Ulises ^^.

        HTTP / 2 est très récent et ne sera pas sérieusement adopté avant 1 an, alors ne vous inquiétez pas :). Si vous voulez la sécurité, utilisez HTTPS et c'est tout.

        Je ne suis pas sûr de ce que Wheezy Web utilise pour HTTP, donc je suppose que ce sera WSGI.

        Salutations!

  6.   lajto dit

    Au fait, un petit quelque chose de rien. Sur certaines distributions, un message d'avertissement concernant .python-eggs apparaît. Rien ne se passe s'il apparaît, mais si vous le trouvez ennuyeux, vous pouvez le supprimer avec:

    chmod go = ~ / .python-oeufs

    Salutations!

  7.   Diego dit

    J'utilise Django, mais je vais vérifier la documentation pour voir comment cela fonctionne. Merci d'avoir partagé. Cordialement

  8.   JD Villegas dit

    Il peut être utilisé depuis Windows !!!, existe-t-il un tutoriel ??

    merci

  9.   Lalita dit

    Salut, nous avons beaucoup d'expérience avec Python. Il me semble qu'ils rament à contre-courant. La meilleure chose jamais inventée pour ce langage est Django. Ils peuvent faire des statistiques et consulter des centaines de programmeurs du monde entier, cela vous donnera plus de 80%, la plupart d'entre eux n'ont pas tort. S'ils rament ou nagent à contre-courant, tôt ou tard ils se noieront ...