J'ai écrit une petite application Python qui fonctionne en tant que démon. Il utilise le filetage et les files d'attente.Communiquer avec un démon python en cours d'exécution
Je cherche des approches générales pour modifier cette application afin que je puisse communiquer avec elle pendant son fonctionnement. La plupart du temps, j'aimerais pouvoir surveiller sa santé.
En un mot, je voudrais pouvoir faire quelque chose comme ceci:
python application.py start # launches the daemon
Plus tard, je voudrais être en mesure de venir et de faire quelque chose comme:
python application.py check_queue_size # return info from the daemonized process
Pour être clair, je n'ai aucun problème à implémenter la syntaxe inspirée de Django. Ce que je n'ai aucune idée de comment faire est d'envoyer des signaux au processus démonisé (start), ou comment écrire le démon pour gérer et répondre à de tels signaux.
Comme je l'ai dit plus haut, je suis à la recherche d'approches générales. Le seul que je puisse voir en ce moment est de dire au démon de consigner en permanence tout ce qui pourrait être nécessaire dans un fichier, mais j'espère qu'il y a une façon moins compliquée de le faire.
MISE À JOUR: Wow, beaucoup de bonnes réponses. Merci beaucoup. Je pense que je vais regarder à la fois Pyro et les approches web.py/Werkzeug, puisque Twisted est un peu plus que ce que je veux mordre à ce stade. Le prochain défi conceptuel, je suppose, est de savoir comment parler à mes fils de travail sans les raccrocher.
Merci encore.
Egalement pour l'interface HTTP. Un script python peut analyser les options de ligne de commande et envoyer des commandes XMLRPC à un serveur HTTP interne. –
+1: HTTP. Intégrez une petite application WSGI dans le démon pour répondre aux demandes. –
(et @VanGale et @ S.Lott) quelqu'un pourrait-il fournir une référence/exemple pour l'exécution d'un serveur http dans le but de recevoir des commandes comme l'OP décrit? Je dois le faire, mais j'aimerais un peu plus de détails. – synaptik