Pour les projets Web basés sur Python, les méthodes de déploiement courantes sont :
fcgi : utilisez spawn-fcgi ou les outils fournis avec le framework pour générer des moniteurs pour chaque processus de projet, puis interagissez avec le service http.
wsgi : Utilisez le module mod_wsgi du service http pour exécuter chaque projet.
Mais il y a aussi uwsgi, qui n'utilise ni le protocole wsgi ni le protocole fcgi, mais crée un protocole uwsgi. Selon l'auteur, le protocole concerne. fcgi 10 fois plus rapide que le protocole. Les principales fonctionnalités d'uwsgi sont les suivantes :
Performances ultra-rapides.
Faible utilisation de la mémoire (mesurée comme étant environ la moitié de mod_wsgi d'apache2).
Gestion multi-applications.
Fonction de journal détaillée (peut être utilisée pour analyser les performances et les goulots d'étranglement de l'application).
Hautement personnalisable (limite de taille mémoire, redémarrage du service après un certain nombre de fois, etc.).
Environnement ubuntu 12.04 ip:10.1.6.79
Installer ee# 🎜🎜 #nginxconfig/etc/nginx/sites-enabled/example
apt-get install nginx-full nginx-common
Install uwsgi
server { listen 80; server_name 10.1.6.79; access_log /var/log/nginx/example_access.log; error_log /var/log/nginx/example_error.log; root /var/www/example; location / { uwsgi_pass 127.0.0.1:9001; include uwsgi_params; uwsgi_param uwsgi_scheme $scheme; uwsgi_param server_software nginx/$nginx_version; } }
apt-get install uwsgi uwsgi-plugin-python
<uwsgi> <plugin>python</plugin> <socket>127.0.0.1:9001</socket> <pythonpath>/var/www/example/app/</pythonpath> <app mountpoint="/"> <script>wsgi_configuration_module</script> </app> <master/> <processes>4</processes> <reload-mercy>8</reload-mercy> <cpu-affinity>1</cpu-affinity> <max-requests>2000</max-requests> <limit-as>512</limit-as> <reload-on-as>256</reload-on-as> <reload-on-rss>192</reload-on-rss> <no-orphans/> <vacuum/> </uwsgi>
Démarrer uwsgi
#!/usr/bin/python import os import sys sys.path.append('/var/www/example/app') os.environ['python_egg_cache'] = '/var/www/example/.python-egg' def application(environ, start_response): status = '200 ok' output = 'hello world!' response_headers = [('content-type', 'text/plain'), ('content-length', str(len(output)))] start_response(status, response_headers) return [output]
-d Exécuté en mode démon. Notez qu'après avoir utilisé -d, vous devez ajouter un fichier journal. adresse, telle que -d /var/log/uwsgi.log
-r 10000 Après avoir démarré 10 000 processus, réapparaissez-les automatiquement
-t 30 Définissez un délai d'attente de 30 secondes. Après le délai d'attente, le lien sera. automatiquement abandonné
–limit-as 32 Contrôler la mémoire totale du processus à 32 m
-x Utiliser le mode profil
4 threads simultanés
uwsgi -x /etc/uwsgi/apps-enabled/default.xml --daemonize /var/log/uwsgi/app/default.log
uwsgi -s :9090 -w myapp -p 4
uwsgi -s :9090 -w myapp -m -p 4
uwsgi -s :9090 -w myapp -m -p 4 -t 30
Service de plus de 10 000 demandes de réapparition automatique
uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128
Fonctionnement en arrière-plan, etc.
uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128 -r 10000
uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128 -r 10000 -d uwsgi.log
#inherited_config=/usr/share/uwsgi/conf/default.ini inherited_config=/etc/uwsgi/apps-enabled/default.xml
#🎜🎜 #Tester si uwsgi est disponible
Test script test.py
#🎜 🎜#
/etc/init.d/nginx start
#!/usr/bin/python def application(env,start_response): start_response('200 ok',[('content_type','text/html')]) return "congraduation!!! uwsgi testing ok!!!
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!