Salut
Si tu es sous Unix, il existe une solution assez simple.
Tu peux créer un petit
daemon, c'est à dire un serveur qui tourne en background, à l'aide du bien connu double fork.
http://www.jejik.com/articles/2007/0...mon_in_python/
Ca c'était pour faire tourner un truc en tâche de fond.
Pour l'arrêt, tu vas devoir te servir des signaux.
http://docs.python.org/library/signal.html
Pour cela, il faut que la boucle de ton service ne soit pas un simple
Mais qu'il y ait une condition qui repose sur quelque chose modifiable depuis l'extérieur. Typiquement, on se sert d'un
threading.Event, sur lequel tu appelleras la méthode
set() pour arrêter ta boucle.
Code:
while not stopEvent.isSet():
Ensuite, il te faut créer un gestionnaire de signal, mettons de
sigkill, qui va faire un
set() sur le
stopEvent (pas en vrac comme ça évidemment... tu préféreras créer une méthode
stopService sur ton service)
Il ne manque plus que le fichier pour indiquer le
pid du processus. Evidemment il doit être facilement retrouvable.
Quand le programme ce lance, il crée le fichier, et pour le couper, tu récupères le
pid dans ce fichier, et tu le
kill.
Mais je pense que ce dernier point est déjà implémenté dans le
daemon dont je t'ai passé le lien.
Bonne chance ;)
Ps: si tu es sous windows, l'idée est la même. La seule différence c'est que tu n'as pas droit au
daemon unix :p
Il te suffirait de créer un
handler pour, mettons, le
sigkill