#!/usr/bin/env python import os from watchdog.events import FileSystemEventHandler from dm.common.utility.loggingManager import LoggingManager class DmFileSystemEventHandler(FileSystemEventHandler): def __init__(self, fileSystemObserver, daqPath, experiment): FileSystemEventHandler.__init__(self) self.logger = LoggingManager.getInstance().getLogger(self.__class__.__name__) self.fileSystemObserver = fileSystemObserver self.daqPath = daqPath self.experiment = experiment def dispatch(self, event): FileSystemEventHandler.dispatch(self, event) def on_any_event(self, event): FileSystemEventHandler.on_any_event(self, event) def on_created(self, event): FileSystemEventHandler.on_created(self, event) def on_deleted(self, event): FileSystemEventHandler.on_deleted(self, event) def on_modified(self, event): FileSystemEventHandler.on_modified(self, event) filePath = event.src_path self.logger.debug('File system modified event: %s' % (event.__dict__)) if not event.is_directory: self.fileSystemObserver.observedFileUpdated(filePath, self.daqPath, self.experiment) def on_moved(self, event): FileSystemEventHandler.on_moved(self, event) #################################################################### # Testing if __name__ == '__main__': import sys import time import logging from watchdog.observers import Observer from watchdog.observers.polling import PollingObserver from watchdog.observers.api import ObservedWatch from watchdog.observers.api import EventQueue from watchdog.observers.api import EventEmitter from watchdog.events import LoggingEventHandler logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') path = sys.argv[1] if len(sys.argv) > 1 else '.' eventHandler = DmFileSystemEventHandler() observer = PollingObserver() observedWatch = observer.schedule(eventHandler, path, recursive=True) print 'OBSERVED WATCH: ', observedWatch #observer.add_handler_for_watch(eventHandler2, observedWatch) #observer._clear_emitters() print observer.emitters observer.start() try: while True: time.sleep(1) print time.time() except KeyboardInterrupt: observer.stop() observer.join()