From e5a8f8b1f829aa80a527cef32121905cd2e07471 Mon Sep 17 00:00:00 2001 From: atse Date: Tue, 8 Aug 2023 17:16:11 +0800 Subject: [PATCH] Stop polling drift Just waiting for the update_s doesn't take into account the time to execute update_params, and causes time drift. --- pytec/tec_qt.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pytec/tec_qt.py b/pytec/tec_qt.py index 37828a9..ddadf72 100644 --- a/pytec/tec_qt.py +++ b/pytec/tec_qt.py @@ -46,9 +46,11 @@ class ClientWatcher(QObject): super().__init__(parent) async def run(self): + loop = asyncio.get_running_loop() while self.running: + time = loop.time() await self.update_params() - await asyncio.sleep(self.update_s) + await asyncio.sleep(self.update_s - (loop.time() - time)) async def update_params(self): self.fan_update.emit(await self._client.get_fan())