URL: https://linuxfr.org/forums/programmation-python/posts/programmer-un-daemon Title: Programmer un daemon Authors: Marotte ⛧ Date: 2015年09月07日T19:07:09+02:00 License: CC By-SA Tags: Score: 1 Au cas où vous auriez la bonté d’aider une moule autodidacte qui apprend Python sur le tas je vous expose mon problème... Le contexte : J’ai un script Python3 qui récupère les posts du bouchot pour les stocker dans une base SQLite, actuellement si je veux que ce script tourne de manière régulière je lui colle une entrée dans ma crontab, ça juste marche mais ça ne me semble pas propre. Donc ce que je voudrais faire c’est que ce script puisse tourner en tâche de fond et faire sa requête GET pas forcément à intervalles réguliers mais en fonction du nombre de posts récupérés à la dernière exécution. Je me dis donc que ce serait bien que ce script soit « daemonizé ». Donc vu que j’y connais rien et que je suis une buse complète je me suis dit qu’il faudrait commencer par un test simple. Donc voilà ce que je fais : Prout.py : ```python #!/usr/bin/env python3 from time import sleep def prout(): print("prout !") sleep(3) while True: prout() ``` daemon_prout.py : ```python #!/usr/bin/env python3 import daemon from Prout import prout context = daemon.DaemonContext() with context: prout() ``` Quand je lance daemon_prout.py ça flatule bien toutes les 3 secondes, par contre ça ne le fait pas en arrière plan... Qu’est-ce que je fais mal ? J’ai essayé d’autres approches, soit ça me rend bien la main mais ça "prout !" pas, soit ça "prout !" mais ça ne me rend pas la main (ça ne tourne donc pas en tâche de fond). Je pense qu’il y a des choses à paramétrer sur l’objet context mais je suis perdu. J’ai essayé avec context.files_preserves = [1,2,3] mais ça ne change rien. Je sais que je pourrais lancer mon script à l’aide de nohup mais je voudrais bien comprendre le principe des daemons en Python3... Moulesquement.