diff --git a/src/aura_engine/scheduling/scheduler.py b/src/aura_engine/scheduling/scheduler.py index 7082a8b465fde68e02e8fc1fd108024e95535f87..c2cabf5f8fbc0a66f0f9eb761487b3a7b83331be 100644 --- a/src/aura_engine/scheduling/scheduler.py +++ b/src/aura_engine/scheduling/scheduler.py @@ -193,16 +193,24 @@ class PlayCommand(EngineExecutor): Args: items ([PlaylistItem]): The set of playlist items to be played. """ + retry_interval = 1 + log_interval = 30 + last_log = 0 + items_str = ResourceUtil.get_items_string(items) self.logger.info(SU.cyan(f"=== play('{items_str}') ===")) + last_item: PlaylistItem = items[-1] while not last_item.play.is_ready(): - msg = f"PLAY: Item(s) not yet ready to be played" f" (Items: {items_str})" - self.logger.critical(SU.red(msg)) + now = SU.timestamp() + if now - last_log > log_interval: + msg = f"PLAY: Item(s) not yet ready to be played" f" (Items: {items_str})" + self.logger.critical(SU.red(msg)) + last_log = now if last_item.play.state == PlayState.PlayStateType.FAILED: self.logger.info("PLAY: Preloading failed - skipping play") return - time.sleep(2) + time.sleep(retry_interval) self.engine.player.play(items[0], engine.Player.TransitionType.FADE) timetable_renderer: utils.TimetableRenderer = self.engine.scheduler.timetable_renderer self.logger.info(timetable_renderer.get_ascii_timeslots())