2010-10-22 8 views
6

¿Alguien sabe de un trabajo y bien documentado implementación de un demonio usando Python? Por favor, publique un enlace aquí si conoce un proyecto que se ajuste a estos dos requisitos.aplicación del demonio en Python

+0

trabajo env? Unix? –

+0

env es ubuntu 10.10, python 2.6 – RyanBrady

Respuesta

4

tres opciones que pueden pensar de-

  1. Hacer una tarea programada que llama a la secuencia de comandos. Cron es un nombre común para un daemon de GNU/Linux que periódicamente lanza secuencias de comandos de acuerdo con un programa establecido. Agregue su secuencia de comandos en un crontab o coloque un enlace simbólico en un directorio especial y el daemon maneja el trabajo de iniciarlo en segundo plano. Puedes leer más en wikipedia. Existe una variedad de diferentes daemons cron, pero su sistema GNU/Linux debería tenerlo ya instalado.
  2. Enfoque pitónico (una biblioteca, por ejemplo) para que su secuencia de comandos pueda demonizarse. Sí, requerirá un bucle de evento simple (donde sus eventos son disparadores de temporizador, posiblemente proporcionados por la función de suspensión). Aquí es el que yo recomiendo el uso & - A simple unix/linux daemon in Python
  3. Uso pitón multiprocessing módulo. La esencia de tratar de bifurcar un proceso, etc., está oculta en esta implementación. Es bastante limpio.

No recomendaría 2 o 3 'porque de hecho estás repitiendo la funcionalidad de cron. El paradigma del sistema Linux es permitir que múltiples herramientas simples interactúen y resuelvan sus problemas. A menos que haya razones adicionales por las que debe crear un daemon (además de activarse periódicamente), elija el otro enfoque.

Además, si utiliza daemonize con un bucle y se produce un bloqueo, asegúrese de que tiene registros que le ayudarán a depurar. También idee una forma para que la secuencia de comandos comience de nuevo. Si bien la secuencia de comandos se agrega como una tarea cron, se activará nuevamente en el espacio de tiempo que guardó.

+0

He estado intentando # 2 sin éxito. es como una vez que el daemon se bifurca, ya no puedo hacer referencia a mi proyecto django. pensando que es un problema de camino. ver http://stackoverflow.com/questions/3992175/python-import-module-results-in-nameerror – RyanBrady

+0

¿siguió usted el ejemplo del código en el enlace que di? Eso funciona bien para mí. –

+0

sí, lo seguí. descargó su daemon.py, lo subclasificó. cuando trato de importar mi proyecto django, falla. – RyanBrady

Cuestiones relacionadas