import logging from watchdog.events import FileSystemEventHandler, FileCreatedEvent, FileDeletedEvent, FileModifiedEvent, \ FileMovedEvent from .defs import is_config_file from .log import logger log = logger(__file__) log.setLevel(logging.DEBUG) class ConfigReloader(FileSystemEventHandler): def __init__(self, config): self.config = config def reload(self): try: self.config.reload() except Exception as ex: log.warning('failed loading configuration: %s: %s', type(ex), ex) def on_any_event(self, event): if not ( is_config_file(event.src_path) and isinstance(event, (FileCreatedEvent, FileDeletedEvent, FileModifiedEvent, FileMovedEvent)) ): return log.debug('reloading configuration - triggered by %s', event) self.reload()