From 1ad237d75079d6487f0777f54626da99c03135f0 Mon Sep 17 00:00:00 2001 From: nessi Date: Sat, 14 Feb 2026 15:50:31 +0100 Subject: [PATCH] Optimize collector loop to account for actual execution time. Previously, the loop did not consider the time spent on `collect_once`, potentially causing delays. By adjusting the sleep duration dynamically, the poll interval remains consistent as intended. --- backend/app/services/collector.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/backend/app/services/collector.py b/backend/app/services/collector.py index 77f47bc..60cd4d2 100644 --- a/backend/app/services/collector.py +++ b/backend/app/services/collector.py @@ -271,8 +271,11 @@ async def collect_once() -> None: async def collector_loop(stop_event: asyncio.Event) -> None: while not stop_event.is_set(): + cycle_started = asyncio.get_running_loop().time() await collect_once() + elapsed = asyncio.get_running_loop().time() - cycle_started + sleep_for = max(0.0, settings.poll_interval_seconds - elapsed) try: - await asyncio.wait_for(stop_event.wait(), timeout=settings.poll_interval_seconds) + await asyncio.wait_for(stop_event.wait(), timeout=sleep_for) except asyncio.TimeoutError: pass