Python script como servicio / demonio de linux

Hola,

Estoy tratando de dejar que un script de Python se ejecute como servicio (daemon) en (ubuntu) linux.

En la web existen varias soluciones como:

http://pypi.python.org/pypi/python-daemon/

Un proceso de demonio de Unix con buen comportamiento es difícil de lograr, pero los pasos requeridos son muy similares para cada programa de demonio. Una instancia de DaemonContext contiene el comportamiento y el entorno de proceso configurado para el programa; use la instancia como administrador de contexto para ingresar un estado de demonio.

http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/

Sin embargo, como quiero integrar mi script python específicamente con ubuntu linux, mi solución es una combinación con un script init.d

#!/bin/bash

WORK_DIR="/var/lib/foo"
DAEMON="/usr/bin/python"
ARGS="/opt/foo/linux_service.py"
PIDFILE="/var/run/foo.pid"
USER="foo"

case "$1" in
  start)
    echo "Starting server"
    mkdir -p "$WORK_DIR"
    /sbin/start-stop-daemon --start --pidfile $PIDFILE \
        --user $USER --group $USER \
        -b --make-pidfile \
        --chuid $USER \
        --exec $DAEMON $ARGS
    ;;
  stop)
    echo "Stopping server"
    /sbin/start-stop-daemon --stop --pidfile $PIDFILE --verbose
    ;;
  *)
    echo "Usage: /etc/init.d/$USER {start|stop}"
    exit 1
    ;;
esac

exit 0

y en python:

import signal
import time
import multiprocessing

stop_event = multiprocessing.Event()

def stop(signum, frame):
    stop_event.set()

signal.signal(signal.SIGTERM, stop)

if __name__ == '__main__':
    while not stop_event.is_set():
        time.sleep(3)

Mi pregunta ahora es si este enfoque es correcto. ¿Tengo que manejar alguna señal adicional? ¿Será un "proceso de demonio Unix con buen comportamiento"?

Respuestas a la pregunta(2)

Su respuesta a la pregunta