make scheduler log messages nicer

This commit is contained in:
2020-11-08 05:42:35 +01:00
parent 22b69cbb00
commit 78ba78b070
2 changed files with 20 additions and 12 deletions

View File

@@ -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}"

View File

@@ -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]