Démonisez une application Web Python avec Supervisor

Lorsque je développais une application Web Python avec aws en utilisant le framework Tornado, l'application Web fonctionnant avec aws dormait souvent (l'application tombe), alors j'en ai fait un démon et l'ai fait fonctionner 24/7 (toujours démarré). Un mémo quand j'ai essayé de me réveiller (redémarrer l'application) même si je me suis endormi.

Qu'est-ce que le superviseur

Supervisor est un outil de gestion de processus léger conçu en Python.

procédure

La procédure est la suivante. Tout le travail est fait avec ubuntu 14.04 sur aws.

Installation

Supervisor peut être installé avec ʻapt-get ou pip, mais pour le moment, je décrirai comment installer avec ʻapt-get sur Ubuntu.

$ sudo apt-get install supervisor

Confirmez qu'il a été installé. La version semble inclure «3.0b2».

$ supervisord -v
3.0b2

$ sudo supervisorctl version
3.0b2

Réglage

Écrivez les informations de démarrage de l'application Web dans le fichier de configuration du superviseur (fichier de configuration). Créez un fichier de configuration dans * /etc/supervisor/conf.d/*.

$ sudo vim /etc/supervisor/conf.d/tornado.conf

Le contenu est le suivant. Le nom du processus à gérer par Supervisor est ** tornado **.

tornado.conf


[program:tornado]  ;Nom du processus
directory=/home/ubuntu/tornado-app  ;Directeur de travail
command=/home/ubuntu/tornado-app/venv/bin/python /home/ubuntu/tornado-app/server.py --port=3000  ;Commande de démarrage
numprocs=1  ;Nombre d'instances de démarrage?
autostart=true  ;démarrage automatique
autorestart=true  ;Redémarrer automatiquement
user=ubuntu  ;Lancer l'utilisateur
redirect_stderr=true  ;Erreur standard de sortie
stdout_logfile=/var/log/supervisor/tornado.log  ;Destination de sortie du fichier journal

Supposons que l'application Web ait déjà été clonée git dans / home / ubuntu / tornado-app.

$ cd ~/tornado-app
$ source venv/bin/activate  #activer virtualenv
(venv)$ python server.py --port=3000 &

Veuillez également vous référer à Configuration du superviseur pour savoir comment écrire le fichier de configuration du superviseur.

Démarrer le superviseur, lire le fichier de paramètres

Démarrez le superviseur à l'aide de la commande service supervisor

Redémarrez Supervisor lui-même.

$ sudo service supervisor restart

Assurez-vous que le superviseur lui-même est en cours d'exécution.

$ sudo service supervisor status
 is running

Démarrer et gérer les processus

Gérez le processus avec la commande supervisorctl.

Si vous modifiez le fichier de configuration, vous devrez certainement le relire. Utilisez la commande suivante pour lire le fichier conf.

$ sudo supervisorctl reread

Après cela, démarrez l'application Web gérée par Supervisor.

$ sudo supervisorctl start tornado  #Commencez

Vérifiez si l'application Web est en cours d'exécution.

$ sudo supervisorctl status  #Vérification de l'état
tornado                          RUNNING    pid 3414, uptime 0:07:19

Ça a commencé!

À propos, l'arrêt et le redémarrage sont les suivants.

$ sudo supervisorctl stop tornado  #Arrêtez
$ sudo supervisorctl restart tornado  #Redémarrer

De plus, here a été utile pour la commande supervisorctl.

référence

Recommended Posts

Démonisez une application Web Python avec Supervisor
Jouez comme une application Web avec ipywidgets
[Python] Une application web rapide avec Bottle!
Créez une application Web simple avec Flask
Application Web facile avec Python + Flask + Heroku
Exécutez une application Web Python avec Docker
Créez un framework Web avec Python! (1)
Créez une application de bureau avec Python avec Electron
Créez un framework Web avec Python! (2)
Démoniser un processus Python
Gagnez l'application Web Python + Flask avec Jenkins
Lancer un serveur Web avec Python et Flask
Extraire des données d'une page Web avec Python
Déployer des applications Web Python 3.6 / Django / Postgres sur Azure
Web scraping avec python + JupyterLab
[Pratique] Créez une application Watson avec Python! # 2 [Fonction de traduction]
[Pratique] Créez une application Watson avec Python! # 1 [Discrimination linguistique]
J'ai créé une application de notification de nouvelles en ligne avec Python
Lancer une application Web Python sur Nginx + Gunicorn avec Docker
API Web avec Python + Falcon
Faites une loterie avec Python
Écrire du code dans UnitTest une application Web Python
Application Web avec Python + Flask ② ③
Web scraping débutant avec python
Créer un répertoire avec python
Déployez des applications Web en temps réel avec Swampdragon x Apache
Rationalisez la recherche Web avec Python
Déployer une application Web créée avec Streamlit sur Heroku
Application Web avec Python + Flask ④
Comment déployer une application Web créée avec Flask sur Heroku
[Pratique] Créez une application Watson avec Python! # 3 [Classification du langage naturel]
Incorporer un interpréteur Python dans une application C ++ avec pybind11 + cmake
(Échec) Déployer une application Web créée avec Flask avec heroku
Résoudre ABC163 A ~ C avec Python
Faites fonctionner l'imprimante de reçus avec python
Manuel de graphisme Python avec Matplotlib.
Faisons une interface graphique avec python.
Premiers pas avec les applications Web Python
Résoudre ABC166 A ~ D avec Python
Web scraping avec Python Première étape
J'ai essayé webScraping avec python.
Surveillez les applications Web Python avec Prometheus
Créez un environnement virtuel avec Python!
Obtenez une capture d'écran Web avec python
J'ai fait une loterie avec Python.
Créer un environnement virtuel avec Python 3
Résoudre ABC168 A ~ C avec Python
Créer un système de recommandation avec python
Créer une application Web avec Django
[Python] Générer un mot de passe avec Slackbot
Résoudre ABC162 A ~ C avec Python
Résoudre ABC167 A ~ C avec Python
Résoudre ABC158 A ~ C avec Python
Faisons un graphe avec python! !!
[Python] Hériter d'une classe avec des variables de classe
J'ai créé un démon avec Python
Ecrire un script batch avec Python3.5 ~
[python, ruby] sélénium-Obtenez le contenu d'une page Web avec le pilote Web