Gérer ces processus/démons Python avec Supervisor

Date: 2/10/2013 | Catégories: Developpement,Open-source,Planet-libre | Tags: ,,,

C'est en lisant la document du projet 0Bin, une implémentation libre et auto-hébergé de PasteBin dont je reparlerai bientôt, que je suis tombé sur Supervisor. Supervisor est un système de contrôle de processus (comme launchd ou runinit) simple et orienté utilisateur (voir la documentation et les avantages ici) et donc idéal pour lancer des processus Python en mode démon (par un exemple un serveur Glances, mais ce n'est qu'un exemple...).

Installation de Supervisor

Sur un système Debian/Ubuntu, l'installation de Supervisor se résume à la saisie de la commande suivante dans un terminal:

Une fois l'installation terminé, nous allons maintenant configurer Supervisor en utilisant le fichier /etc/supervisor/supervisord.conf (sur un système Debian).

Ajout d'un démon dans Supervisor

Nous allons donc prendre l'exemple d'un administrateur système qui souhaite que le serveur Glances soit lancé au démarrage de la machine et que celui ci soit redémarré automatiquement dans le cas ou Glances plante <mauvaisefois>ce qui n'arrive jamais</mauvaisefois>.

Pour lancer Glances en mode serveur, il faut utiliser la ligne de commande suivante:

Il suffit donc d'ajouter la section suivante en fin du fichier  /etc/supervisor/supervisord.conf:

On demande a ce que le processus soit exécuté avec les droits d'un utilisateur standard (user=nicolargo dans mon exemple) et que le processus démarre automatiquement au démarrage de Supervisor (autostart=true) et qu'il soit bien redémarré si Supervisor détecte un problème sur le processus Glances.

Prendre en compte la configuration et administrer nos processus

Pour que notre configuration soit prise en compte, il faut relancer Supervisor avec les lignes de commandes:

Normalement, à ce stade, votre processus Glances server doit être lancé. Pour le vérifier vous pouvez utiliser la commande supervisorctl qui permet d'avoir un statu des processus et un moyen simple de les arrêter / démarrer.

Vérification du statu du service Glances server:

Je vous laisse regarder les autres commandes disponibles avec supervisorctl: