Comments on: Réagir à un changement sur un fichier avec watchdog http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/ Du code, du cul Mon, 28 Oct 2019 11:54:55 +0000 hourly 1 https://wordpress.org/?v=4.9.7 By: Geoffrey OnRails http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/#comment-166943 Thu, 12 Nov 2015 22:45:35 +0000 http://sametmax.com/?p=16607#comment-166943 Non seulement comme le dit Marc, “il ne garantie en rien la bonne complétion de vos fichiers, il lèvera un événement au premier octet écrit, c’est à vous de contrôler le fichier en amont avant de le traiter”, mais sur Windows c’est même pire que ça.

“Changed – raised whenever changes are made to the size, system attributes, last write time, last access time, or security permissions of a directory or file. ” https://msdn.microsoft.com/en-us/library/ch2s8yd7%28v=vs.90%29.aspx

Et plus loin dans la doc : “Time stamps are updated at various times and for various reasons. The only guarantee about a file time stamp is that the file time is correctly reflected when the handle that makes the change is closed. ” https://msdn.microsoft.com/en-us/library/ms724290%28VS.85%29.aspx

Aucune garantie sur quand l’event va être levé, sur combien il va y en avoir, tout particulièrement lorsqu’il s’agit de grosses modifications de gros fichiers.

En bref, c’est bien utile, mais il faut être bien conscient des limitations, et elles sont rarement indiquées clairement dans le doc, malheureusement.

]]>
By: hiramash http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/#comment-163311 Tue, 14 Jul 2015 19:23:33 +0000 http://sametmax.com/?p=16607#comment-163311 @Sam

“Mais faut pas avoir trop de fichiers j’imagine sinon ça doit ramouiller.”

En fait c’est beaucoup plus lourd que ça.

J’ai utilisé “inotify” (c’était pas du Python à l’époque, mais j’attaquais en batch) et je l’ai recommandé à un collègue sysadmin. Enchanté, il l’a mis sur un serveur de gestion de mises à jour et un jour…le serveur s’est effondré car il y avait près de 2000 mises à jour simultanées.

Il aurait fallu que les routines déclenchées appellent la mise en tampon avec “at” ; bref, mettre en file d’attente les tâches déclenchées par des événements…

En outre, j’ai voulu m’en servir sur un serveur Samba, pour qu’il purge un répertoire sous certaines conditions, et me lance des “copy” et des “rsync” sous d’autres conditions. Las ! Inotify, ça ne MARCHE PAS sur un répertoire Windows…(normal, hein? Le système de fichiers Win ne fournissant pas les mêmes événements fichiers que sous Linux)

Donc, le concept de portabilité sous Python, c’est pas un gadget, c’est une vraie bouée de sauvetage face aux lacunes des OS les uns par rapport aux autres. Autre exemple pour le troll : “virtualenv” et “fakeroot”…

Vala, vala,

Long life to Python !

]]>
By: khamaileon http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/#comment-163308 Tue, 14 Jul 2015 16:42:11 +0000 http://sametmax.com/?p=16607#comment-163308 @Sam: Ok c’est limpide pour moi maintenant. Au final je lance simplement mes tests à chaque modification de fichiers avec la commande watchmedo: watchmedo shell-command –patterns=”*.py” –recursive –command=’python manage.py test -v2′

Thx

]]>
By: Sam http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/#comment-163307 Tue, 14 Jul 2015 14:52:51 +0000 http://sametmax.com/?p=16607#comment-163307 @khamaileon: question trop vague, on ne connait pas tes besoins, les points de comparaison avec les autres solutions, les contraintes…. Mais d’une manière générale, watchdog est juste là pour faire la moitié du boulot : lancer un truc au changement d’un fichier. Pour du build, il faut aussi la notion de tache (comme par exemple le fait pydoit).

]]>
By: khamaileon http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/#comment-163306 Tue, 14 Jul 2015 14:34:55 +0000 http://sametmax.com/?p=16607#comment-163306 @Sam @LeMeteore

Je me suis mal exprimé. Par meilleure solution j’entendais facile à mettre en place, rapide d’exécution, solution éprouvée, documentée, …

@LeMeteore

On utiliser aussi Grunt et Gulp pour le front. Je cherche donc à trouver un équivalent Python.

Merci à @Sam pour le post

]]>
By: Sam http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/#comment-163285 Mon, 13 Jul 2015 19:19:06 +0000 http://sametmax.com/?p=16607#comment-163285 Sympas ! Mais faut pas avoir trop de fichiers j’imagine sinon ça doit ramouiller.

]]>
By: Kikoololmdr http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/#comment-163284 Mon, 13 Jul 2015 18:58:21 +0000 http://sametmax.com/?p=16607#comment-163284 Et un petit code en exemple pour avoir la notification des modifications de fichiers entre le moment où le programme s’est arrêté et où il a été redémarré :

https://gist.github.com/serge-kilimoff/8163233

Je l’ai écrit il y a un moment, je ne sais pas si ça fonctionne toujours, c’est plutôt considérer comme une base de code pour un truc plus poussé (de mémoire, je l’avais fais pour reconstruire automatiquement du css avec clevercss).

]]>
By: Sam http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/#comment-163281 Mon, 13 Jul 2015 16:52:12 +0000 http://sametmax.com/?p=16607#comment-163281 @ThomasG77: c’est pareil. La doc de watchdog est un peu mieux, et comme tu le dis, watchdog est crossplateform. Sinon c’est kiffkiff.

]]>
By: LeMeteore http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/#comment-163276 Mon, 13 Jul 2015 14:56:35 +0000 http://sametmax.com/?p=16607#comment-163276 @khamaileon

il n’existe pas de meilleure solution.

Je gere ce genre de tache avec incron: http://www.cyberciti.biz/faq/linux-inotify-examples-to-replicate-directories/

Mon pote front-dev lui prefere gruntJs

Et certains utilisent des git hook pre-commits.

Merci encore pr le post, je ne connaissais pas watchdog.

]]>
By: ThomasG77 http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/#comment-163275 Mon, 13 Jul 2015 14:42:49 +0000 http://sametmax.com/?p=16607#comment-163275 Si “Linux only”, quel est l’intérêt par rapport à son cousin Pyinotify https://github.com/seb-m/pyinotify?

Je connais Watchdog comme Pyinotify mais j’ai plutôt utilisé Pyinotify et je vois pas trop la différence sauf l’aspect multi-plateforme.

]]>