Donner mon application Python une interface Web pour surveiller, en utilisant Tornado
-
27-09-2019 - |
Question
J'ai une application Python qui est daemon et en cours d'exécution sur un serveur 24/7. Je voudrais être en mesure de donner une interface web incroyablement simple pour que je puisse suivre l'évolution des valeurs de quelques variables au sein du programme.
J'utilise Tornado, et je suis en cours d'exécution et avec le simple «Bonjour, monde que vous pouvez trouver sur
La solution Est-il possible d'utiliser le package Modifier La documentation du module Faites-moi savoir si cela fonctionne! threading
et exécuter Tornado à l'intérieur de son propre fil? threading
http://docs.python.org/library/threading.html a plus de détails, mais j'imagine quelque chose comme ceci: import threading
t = threading.Thread(target = tornado.ioloop.IOLoop.instance().start)
t.start()
Autres conseils
Je crois que le meilleur (lire: plus facile) approche serait d'avoir votre application démon écrire ces variables particulières que vous souhaitez surveiller sur un espacement partagé que votre application tornade accès peut. Cela pourrait être un fichier, une prise, une base de données, ou un magasin de valeur clé. Quelques idées d'idées qui viennent à l'esprit est d'utiliser votre base de données existante (si elle existe), SQLite, ou même memcached. Ensuite, vous simplement que votre demande de tornade lire ces valeurs de partout où vous les avez stockées.
Vous avez raison qu'une fois que vous exécutez la commande de tornade tornado.ioloop.IOLoop.instance().start()
flux ne retourne jamais de cette boucle. À partir de là, le contrôle de votre application reste dans l'application et RequestHandlers que vous avez défini.
Une autre solution moins élégante serait de YAML utiliser pour sérialiser les objets périodiquement à partir de votre application principale, et avoir l'application Web que vous lisez les. Vous pouvez même jeter des objets dans YAML, pour que vous puissiez voir les différents états de ceux-ci.
Vous pouvez essayer d'utiliser http://www.zeromq.org/ comme un moyen de communication entre les deux processus / threads.