From 78ba78b0701bb4843e55f944127927bf4581c40a Mon Sep 17 00:00:00 2001 From: Thomas Oettli Date: Sun, 8 Nov 2020 05:42:35 +0100 Subject: [PATCH] make scheduler log messages nicer --- pyinotifyd/__init__.py | 1 - pyinotifyd/scheduler.py | 31 ++++++++++++++++++++----------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/pyinotifyd/__init__.py b/pyinotifyd/__init__.py index c034626..826a8d9 100755 --- a/pyinotifyd/__init__.py +++ b/pyinotifyd/__init__.py @@ -73,7 +73,6 @@ class EventMap(ProcessEvent): for flag, tasks in event_map.items(): self.set_task(flag, tasks) - def set_task(self, flag, tasks): assert flag in EventMap.flags, \ f"event_map: invalid flag: {flag}" diff --git a/pyinotifyd/scheduler.py b/pyinotifyd/scheduler.py index 2171bb3..2282f27 100755 --- a/pyinotifyd/scheduler.py +++ b/pyinotifyd/scheduler.py @@ -95,8 +95,16 @@ class TaskScheduler(Task): self._tasks = {} - async def _schedule_task(self, event, task_id, task_state): + async def _schedule_task(self, event, task_id, task_state, restart): if self._delay > 0: + if restart: + action = "re-schedule" + else: + action = "schedule" + + self._log.info( + f"{action} task ({_event_to_str(event)}, " + f"task_id={task_state.task_id}, delay={self._delay})") await asyncio.sleep(self._delay) task_state.waiting = False @@ -113,25 +121,26 @@ class TaskScheduler(Task): (event.dir and self._dirs)): return - self.cancel(event) + if event.pathname in self._tasks: + self.cancel(event, silent=True) + restart = True + else: + restart = False task_state = _TaskState() task_state.task_id, task_state.task = super().start( - event, task_state, *args, **kwargs) + event, task_state, restart, *args, **kwargs) self._tasks[event.pathname] = task_state - if self._delay > 0: - self._log.info( - f"schedule task ({_event_to_str(event)}, " - f"task_id={task_state.task_id}, delay={self._delay})") - def cancel(self, event): + def cancel(self, event, silent=False): if event.pathname in self._tasks: task_state = self._tasks[event.pathname] if task_state.waiting: - self._log.info( - f"cancel task ({_event_to_str(event)}, " - f"task_id={task_state.task_id})") + if not silent: + self._log.info( + f"cancel task ({_event_to_str(event)}, " + f"task_id={task_state.task_id})") task_state.task.cancel() del self._tasks[event.pathname]