diff --git a/sardine_core/scheduler/async_runner.py b/sardine_core/scheduler/async_runner.py index a3f1010f..457f897e 100644 --- a/sardine_core/scheduler/async_runner.py +++ b/sardine_core/scheduler/async_runner.py @@ -273,11 +273,6 @@ def defer_beats(self) -> float: """The number of beats to defer function calls.""" return float(self.scheduler.deferred) - @property - def defer_duration(self) -> float: - """The amount of time to defer function calls.""" - return self.defer_beats * self.clock.beat_duration - @property def env(self) -> "FishBowl": """A shorthand for the scheduler's fish bowl.""" @@ -681,11 +676,10 @@ async def _run_once(self) -> None: arriving_states: list[DeferredState] = [] while self.deferred_states: entry = self.deferred_states[0] - entry_deadline = entry.deadline - self.defer_duration if ( - self.clock.time >= entry_deadline + self.clock.time >= entry.deadline or state is not None - and deadline >= entry_deadline + and deadline >= entry.deadline ): heapq.heappop(self.deferred_states) @@ -715,7 +709,7 @@ async def _run_once(self) -> None: # sleeping a full period. deadline = self.deferred_states[0].deadline # interrupted is true if we are past the deadline - interrupted = await self._sleep_until(deadline - self.defer_duration) + interrupted = await self._sleep_until(deadline) return self._jump_start_iteration() # NOTE: deadline will always be defined at this point @@ -751,7 +745,7 @@ async def _call_func(self, func, args, kwargs): if self.defer_beats: delta = self.clock.time - self._expected_time - shift = self.defer_duration - delta + shift = self.defer_beats * self.clock.beat_duration - delta self.time.shift += shift return await maybe_coro(func, *args, **valid_kwargs)