def notify_state_observers()

in smallpond/execution/scheduler.py [0:0]


    def notify_state_observers(self, force_notify=False) -> bool:
        secs_since_last_state_notify = time.time() - self.last_state_notify_time
        if force_notify or secs_since_last_state_notify >= self.secs_state_notify_interval:
            self.last_state_notify_time = time.time()
            for observer in self.sched_state_observers:
                if force_notify or observer.enabled:
                    start_time = time.time()
                    observer.update(self)
                    elapsed_time = time.time() - start_time
                    if elapsed_time >= self.ctx.secs_executor_probe_interval / 2:
                        self.secs_state_notify_interval = self.ctx.secs_executor_probe_timeout
                    if elapsed_time >= self.ctx.secs_executor_probe_interval:
                        observer.enabled = False
                        logger.warning(f"disabled slow scheduler state observer (elapsed time: {elapsed_time:.1f} secs): {observer}")
            return True
        else:
            return False