Script Python que linux service/démon

Bonjour,

Je suis en train de laisser un script python pour exécuter en tant que service (daemon) sur (ubuntu) linux.

Sur le web, il existe plusieurs solutions comme:

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

Une sage Unix processus de démon est difficile d'obtenir un droit, mais les étapes sont sensiblement les mêmes pour chaque programme démon. Un DaemonContext instance détient le comportement et les process de l'environnement pour le programme; utiliser l'instance en tant que gestionnaire de contexte pour saisir un démon de l'état.

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

Cependant que je souhaite intégrer à mon script python spécifiquement avec ubuntu linux ma solution est une combinaison avec une init.d script

#!/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

et 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)

Ma question est maintenant de savoir si cette approche est correcte. Dois-je gérer tout de signaux supplémentaires? Ce sera une sorte de "well-behaved Unix processus de démon"?

InformationsquelleAutor tauran | 2011-01-16