[PYTHON] exécuter le serveur uwsgi en mode uwsgi-gevent

http://uwsgi-docs.readthedocs.io/en/latest/Gevent.html?highlight=gevent Tout en regardant, déplaçons uwsgi en mode gevent.

environnement

nginx: 1.10.1 python: 2.7.10 uwsgi: 2.0.13.1 Comme il est construit localement, nginx-uwsgi communique avec les sockets de domaine Unix.

paramètres uwsgi

Ajout du paramètre gevent

uwsgi.ini


[uwsgi]
...
gevent = 40

La valeur ici est le nombre de travailleurs dans gevent, mais je ne connais pas la valeur optimale. (Je veux que quelqu'un me dise)

Module MySQL

Il semble que gevent ne supporte pas le connecteur MySQL s'il s'agit de MySQL Python. Utilisez PyMySQL. De plus, lors de l'utilisation de Django, si PyMySQL est utilisé tel quel, il ne sera pas maillé avec l'implémentation backend, donc au démarrage,

import pymysql
pymysql.install_as_MySQLdb()

Tu as besoin de faire.

Patch de singe

Au début du module de démarrage uwsgi,

import gevent.monkey
gevent.monkey.patch_all()

Appliquez le patch de singe avec. (À exécuter avant les autres importations) Il semble que gevent-monkey-patch = true peut également être utilisé dans uwsgi.ini, Dans mon environnement, j'ai eu une erreur autour de MySQL et cela n'a pas fonctionné. C'est peut-être lié à l'ordre d'importation interne.

Courir

Exécutez uwsgi comme d'habitude,

*** running gevent loop engine [addr:0x10e228440] ***

Si un message comme celui-ci s'affiche, le démarrage est réussi en mode gevent. Après cela, essayez la requête HTTP et si aucune erreur ne se produit, c'est OK.

Essayez de commencer

Il est difficile de réaliser la différence entre no gevent et no gevent (car il est local). Je ne connais toujours pas la valeur optimale du paramètre, je vais donc essayer différentes choses et la vérifier.

Recommended Posts

exécuter le serveur uwsgi en mode uwsgi-gevent
Utilisons Juman ++ en mode serveur
Exécutez des tâches en arrière-plan sur le serveur sur lequel vous vous êtes connecté
Exécutez CGI écrit en python sur le serveur de location de Sakura
Jusqu'à ce que vous exécutiez le serveur Django avec Visual Studio Code
Serveur DNS en Python ....
Configuration pour exécuter l'application dans un sous-répertoire avec nginx + uwsgi
Exécuter le mode interactif matplotlib de manière asynchrone
Exécuter des tâches automatisées en Python
Exécuter des commandes shell en Python
Exécuter Python unittest en parallèle
Exécuter une tâche d'arrière-plan avec Fabric
Exécutez Amazon Linux 2 dans VirtualBox
Utilisation du mode Python dans le traitement