Je suis à la recherche d'un exemple d'application web basée sur Flask avec un observateur Watchdog. Plus précisément, je veux utiliser l'observateur watchdog pour détecter tout changement dans des répertoires prédéfinis et mettre à jour une application web en fonction de ces changements. Je peux trouver de nombreux exemples pour chacun d'entre eux, c'est-à-dire des exemples d'applications web basées sur flask et d'observateur watchdog.
Mais, je ne sais pas comment intégrer deux exemples et les faire fonctionner sans problème. Quelqu'un peut-il me fournir un exemple simple ?
En outre, je me demande si je peux exécuter l'observateur de chien de garde avec Celery worker ?
Merci
EDIT : J'ai utilisé un celery worker pour exécuter l'observateur watchdog afin de surveiller un répertoire et ses sous-répertoires comme suit :
@celery.task(bind=True)
def _watcher(self):
observer = Observer()
handler = MyHandler()
observer.schedule(handler, '.')
observer.start()
try:
while True:
if not handler.event_q.empty():
event, ts = handler.event_q.get()
self.update_state(state='PROGRESS', meta={'src_path': event.src_path, 'event_type': event.event_type})
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
return {'src_path': 'srcpath', 'event_type': 'eventtype'}
Ensuite, du côté du front-end, toutes les 1 seconde, il appelle la fonction GET pour mettre à jour les changements, s'il y en a. C'est un peu compliqué.
Ce que je veux réaliser, c'est 1) surveiller un répertoire et ses sous-répertoires, 2) s'il y a des changements, mettre à jour une base de données en fonction des changements et 3) mettre à jour le côté frontal en fonction des changements.
Jusqu'à présent, je pouvais mettre à jour une base de données en fonction des changements dans le système de fichiers en utilisant le chien de garde (classe MyHandler dans le code ci-dessus). Mais, je suis toujours à la recherche d'une meilleure solution pour observer les changements dans un cadre flask et de mettre à jour les changements dans le côté front-end.