Escribí una pequeña aplicación de Python que se ejecuta como daemon. Utiliza subprocesos y colas.Comunicación con un demonio python en ejecución
Estoy buscando enfoques generales para modificar esta aplicación para que pueda comunicarme con ella mientras se está ejecutando. Sobre todo me gustaría ser capaz de controlar su salud.
En pocas palabras, me gustaría ser capaz de hacer algo como esto:
python application.py start # launches the daemon
Más tarde, me gustaría ser capaz de venir y hacer algo como:
python application.py check_queue_size # return info from the daemonized process
Para ser claro, no tengo ningún problema para implementar la sintaxis inspirada en Django. Lo que no tengo idea de cómo hacer es enviar señales al proceso daemonizado (inicio), o cómo escribir el daemon para manejar y responder a tales señales.
Como dije antes, estoy buscando enfoques generales. El único que puedo ver en este momento es decirle al daemon que registre constantemente todo lo que pueda necesitarse para un archivo, pero espero que haya una manera menos complicada de hacerlo.
ACTUALIZACIÓN: Wow, un montón de buenas respuestas. Muchas gracias. Creo que veré los enfoques de Pyro y web.py/Werkzeug, ya que Twisted es un poco más de lo que quiero morder en este momento. El próximo desafío conceptual, supongo, es cómo hablar con mis hilos de trabajo sin colgarlos.
Gracias de nuevo.
También +1 para la interfaz HTTP. Una secuencia de comandos python puede analizar las opciones de línea de comandos y enviar comandos XMLRPC a un servidor HTTP interno. –
+1: HTTP. Incruste una pequeña aplicación WSGI en el daemon para responder a las solicitudes. –
(y @VanGale y @ S.Lott) ¿podría alguien proporcionar una referencia/ejemplo para ejecutar un servidor http con el propósito de recibir comandos como el OP descrito? Necesito hacer esto, pero me gustaría un poco más de detalle. – synaptik