Uwsgi l’interface des applications web pyton, perl, ruby

applications web

Quand on développe des applications web, on a besoin de générer du code html, pour cela de nombreux langages sont à notre disposition (php, python, ruby, perl …). Ensuite il faut un serveur web qui va envoyer nos pages html aux clients selon le protocole HTTP, là encore le choix est vaste (apache, lighttpd, nginx …)

Seulement voilà le serveur web au départ lit des simples fichiers texte ou image et les envoie au client, ça c’est le contenu statique. Lorsqu’on fait du « dynamique » avec un de ces langages (php, python, ruby, perl …) il faut un composant supplémentaire pour lier notre application avec le serveur web (mod_php, mod_python, cgi, fastcgi, wsgi …)

Nous chez Scopart on aime bien le python, prenons donc cet exemple. On a de multiples projets django dans lesquels on utilise le serveur fastcgi de django, mais si on fait une application flask, il n’y a pas de serveur fastcgi fourni. L’idée est d’avoir une seule interface pour tous nos projets, c’est là qu’intervient uwsgi, un formidable outil. Bien sûr il y a aussi gunicorn, mais uwsgi offre beaucoup plus de possibilités.

Voici une liste d’avantages qui nous a séduit:

  • uwsgi est écrit en C, ceci lui confère d’excellentes performances.
  • le mode de configuration est très souple et puissant, il accepte de nombreux formats (ini, xml, yaml …)
  • le nombre d’options est énorme !
  • le mode Emperor permet de gérer plusieurs projets (arrêt/redémarrage, surveillance)
  • le ZergMode permettant d’ajouter dynamiquement des workers (processus) à votre application

La liste complète des possibilités est ici.

Le mode « emperor » pourra vous permettre de gérer plusieurs projets de manière efficace et sécurisée sans avoir à installer des outils comme supervisor, ceci simplifie l’administration système. Uwsgi vous permet aussi de configurer des taches « cron » dans le fichier de configuration d’un projet ce qui évite de devoir éditer les crontabs système. Vous pourrez gérer avec cet outil des applications python, Ruby, Perl, Php … Vous trouverez à coup sûr votre bonheur avec uwsgi. Si vous voulez le tester: « pip install uwsgi ». Certains serveurs web intègrent le fonctionnement uwsgi (apache2, nginx, lighttpd …) sinon vous pouvez fonctionner en mode « reverse proxy » car uwsgi intègre un serveur web léger.

Uwsgi est open source, vous pouvez le retrouver sur github. Merci à unbit pour ce super travail.