Maison  >  Article  >  développement back-end  >  Résumé de 9 méthodes de déploiement de programmes Web Python

Résumé de 9 méthodes de déploiement de programmes Web Python

不言
不言original
2018-04-16 17:01:521552parcourir

Python dispose de nombreux frameworks de développement Web. Une fois le code écrit, le déploiement et le lancement sont un gros problème. De manière générale, les applications Web sont généralement des structures de serveur Web à trois niveaux ---->application ----->. ; Serveur DB

Vous pouvez compter les serveurs Web grand public avec une seule slap, apache, lighttpd, nginx, iis

application, le nom chinois est appelé service d'application, qui est le code d'application que vous écrivez basé sur un certain framework Web. Fait référence aux services de stockage. MySQL est principalement utilisé dans le développement Web. Ces dernières années, en raison de l'expansion de l'échelle des sites Web, le stockage de valeurs clés tel que Memcache et Redis est également devenu populaire Le serveur web placé à l'avant a 3 fonctions

Traiter efficacement les fichiers statiques Le serveur web est développé en C, appelant des fonctions natives, et les IO et le transfert de fichiers sont optimisés en conséquence

Faire office de. un simple pare-feu réseau, vous pouvez nier Certaines IP, contrôlant simplement le nombre de connexions simultanées, etc., valent mieux que rien

Gérer des demandes de connexion courtes simultanées élevées et transférer les demandes de milliers d'utilisateurs via des dizaines de longues connexions sur l'intranet. Une des raisons est que le serveur Web est très professionnel dans la gestion d'une simultanéité élevée. Une autre raison est que les frameworks utilisés par la plupart des applications n'ont pas la capacité de gérer une simultanéité élevée.

En fait, certains frameworks Web. sur le marché ont un support intégré pour epoll/kqueue, etc. Les bibliothèques réseau efficaces ont la capacité de gérer une concurrence élevée, comme Tornado de Python, Tomcat basé sur Java, Jetty, etc. Certaines personnes suppriment le serveur Web frontal et Cependant, lors du déploiement d'applications sur un réseau public, il est préférable de ne pas le faire. De cette façon, pour les deux raisons mentionnées ci-dessus 1 et 2, les conditions de réseau du navigateur de l'utilisateur au serveur Web sont toutes sortes d'étranges et vous pouvez le faire. Je n'imagine pas.

Le serveur Web recommande fortement d'utiliser nginx pour trois raisons

Excellentes performances et très stable

Facile à installer, avec peu de packages dépendants
Le fichier de conf est très facile à configurer, plus simple qu'apache/lighttpd
Il existe 9 façons de déployer des programmes Web développés en python

mod_python, il s'agit d'un module intégré d'apache Cela dépend fortement de la version de python dans laquelle mod_python est. compilé avec. Il est utilisé avec Apache.

cgi n'est pas recommandé. Ceci est trop ancien et non recommandé, et nginx ne prend pas en charge la méthode cgi, vous ne pouvez utiliser que lighttpd ou apache

. fastcgi. Il s'agit actuellement de la méthode la plus populaire, prise en charge par le module flup. L'instruction de configuration correspondante dans nginx est fastcgi_pass

spawn-fcgi , il s'agit du programme de gestion multi-processus fastcgi, fourni avec l'installation de lighttpd. package. Il a le même effet que flup. La différence est que flup est introduit au niveau du code python et que spawn-fcgi est un programme externe. spawn-fcgi est très polyvalent et peut prendre en charge le code développé dans n'importe quel langage, tel que php, python et perl. Tant que votre code implémente l'interface fastcgi, il peut vous aider à gérer votre processus

scgi, le. Le nom complet est Simple Common Gateway Interface est également une version alternative de cgi. Je pense qu'il est similaire à fastcgi, mais il n'a pas été largement promu. La commande de configuration correspondante de nginx est scgi_pass. si vous le souhaitez. Flup le prend également en charge.

http, nginx utilise le transfert proxy_pass. Cela nécessite que l'application back-end ait un serveur http intégré capable de gérer une concurrence élevée. Dans le framework Web Python, la seule option est tornado.

Programmeurs Python J'aime inventer la roue. En plus d'être un framework Web, tornado peut également fournir un serveur http hautes performances de manière indépendante. Par conséquent, si vous utilisez d'autres frameworks python pour écrire du code, comme Bottle, vous pouvez le faire. démarrez également un serveur hautes performances en important le serveur http tornado qui peut également être déployé à l'aide du protocole http et de nginx. En expansion, il existe de nombreux serveurs http dans le package python qui peuvent gérer une concurrence élevée, tels que gevent, qui peuvent également être référencés par d'autres frameworks pour prendre en charge le déploiement http.

En réalité, lors de l'utilisation de Java pour créer des programmes Web, http et nginx sont généralement utilisés. Le serveur d'application choisit Tomcat ou Jetty

uwsgi, qui se compose de 4 parties,

Protocole uwsgi

Module de protocole de support intégré du serveur Web

Module de support du protocole du serveur d'applications
Programme de contrôle de processus

nginx a un support intégré pour le protocole uwsgi à partir de la version 0.8.4. Le protocole uwsgi est très simple, avec 4 mots par en-tête de strophe + un corps, le corps peut être un paquet de nombreux protocoles, tels que http, cgi, etc. (marqué par des champs dans l'en-tête, j'ai déjà fait un petit-). test de comparaison des performances à grande échelle, et les résultats ont montré que par rapport à fastcgi, uwsgi n'a aucune performance. L'avantage évident peut également être dû à l'ensemble de données plus petit

La caractéristique d'uwsgi est son propre programme de contrôle de processus Il est écrit. en langage C et utilise la fonction natvie. En fait, c'est la même chose que spawn-fcgi/php-fpm. Par conséquent, uwsgi peut prendre en charge une variété de frameworks d'application, notamment (python, lua, ruby, erlang, go), etc.

Gunicorn, un outil similaire à uwsgi, est transplanté à partir de l'outil de déploiement de rails (Unicorn) . Mais le protocole qu'il utilise est WSGI, le nom complet est Python Web Server Gateway Interface, qui est la norme officielle (PEP 333) définie dans python2.5. Il a de bonnes racines et est relativement simple à déployer http://gunicorn. org/ Il existe un tutoriel détaillé

mod_wsgi, un module d'Apache, qui prend également en charge le protocole WSGI, https://code.google.com/p/modwsgi/

le protocole fastcgi et http le protocole sont utilisés dans le déploiement du code Comparaison des avantages et des inconvénients

Bien que fastcgi soit un protocole binaire, il n'économise pas de ressources par rapport au protocole http. Le protocole binaire ne peut enregistrer que l'expression de nombres, tels que 1234567. Il faut 7 octets pour l'exprimer sous forme de chaîne et 4 octets sous forme de nombre, et la chaîne est la même partout

Lorsque fastcgi transmet des données , afin qu'il soit compatible avec le protocole cgi et apporte également un tas de variables d'environnement cgi. Par conséquent, par rapport au protocole http, utiliser fastcgi pour transmettre des données n'est pas économique, mais plus coûteux

Le seul avantage de. fastcgi est qu'il s'agit d'une connexion à long terme, si l'utilisateur fait 1000 requêtes simultanées, fastcgi peut utiliser 10 liens pour transférer vers l'application back-end. Si vous utilisez le protocole http, vous pouvez en donner autant que vous le souhaitez, et 1000 requêtes seront initiées vers l'application back-end

méthode de transfert de proxy http, des problèmes surviendront face à une concurrence ultra-élevée, car dans la pile de protocole TCP, le port est un entier int16 lorsque vous créez un nouveau. connectez-vous localement, vous devez consommer un port, qui peut aller jusqu'à 65536. Des centaines de milliers de requêtes externes simultanées, le pool de ports est épuisé et votre serveur ne peut que refuser de répondre

Résumé

Mon habitude personnelle est d'utiliser le protocole fastcgi pour déployer des programmes python. est simple et sans problème. Choisissez la solution technologique, assurez-vous de choisir la solution la plus simple et la plus courante. Le script d'exécution fastcgi de ce blog est le suivant

kill - `cat / tmp / django.pid`
echo 'restart django....' 
python . / manage.py runfcgi - - settings = lutaf.settings_r maxchildren =  maxspare = minspare =  method = prefork pidfile = / tmp / django.pid host = 127.0 . 0.1  port = outlog = / tmp / dj.out errlog = / tmp / dj.error

.

Je vous recommande d'essayer Gunicorn, c'est l'orientation future du développement

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn