From 5dadc2067db7b36f43538f22d730e5daaa14b270 Mon Sep 17 00:00:00 2001 From: Eric Callahan Date: Thu, 9 Dec 2021 06:31:08 -0500 Subject: [PATCH] data_store: replace PeriodicCallback Signed-off-by: Eric Callahan --- moonraker/components/data_store.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/moonraker/components/data_store.py b/moonraker/components/data_store.py index 8799cbe..383f0cf 100644 --- a/moonraker/components/data_store.py +++ b/moonraker/components/data_store.py @@ -8,7 +8,6 @@ from __future__ import annotations import logging import time from collections import deque -from tornado.ioloop import PeriodicCallback # Annotation imports from typing import ( @@ -28,7 +27,7 @@ if TYPE_CHECKING: GCQueue = Deque[Dict[str, Any]] TempStore = Dict[str, Dict[str, Deque[float]]] -TEMPERATURE_UPDATE_MS = 1000 +TEMP_UPDATE_TIME = 1. class DataStore: def __init__(self, config: ConfigHelper) -> None: @@ -40,8 +39,9 @@ class DataStore: self.last_temps: Dict[str, Tuple[float, ...]] = {} self.gcode_queue: GCQueue = deque(maxlen=self.gcode_store_size) self.temperature_store: TempStore = {} - self.temp_update_cb = PeriodicCallback( - self._update_temperature_store, TEMPERATURE_UPDATE_MS) + eventloop = self.server.get_event_loop() + self.temp_update_timer = eventloop.register_timer( + self._update_temperature_store) # Register status update event self.server.register_event_handler( @@ -102,12 +102,12 @@ class DataStore: del self.last_temps[sensor] # Update initial temperatures self._set_current_temps(status) - self.temp_update_cb.start() + self.temp_update_timer.start() else: logging.info("No sensors found") self.last_temps = {} self.temperature_store = {} - self.temp_update_cb.stop() + self.temp_update_timer.stop() def _set_current_temps(self, data: Dict[str, Any]) -> None: for sensor in self.temperature_store: @@ -119,7 +119,7 @@ class DataStore: data[sensor].get('power', last_val[2]), data[sensor].get('speed', last_val[3])) - def _update_temperature_store(self) -> None: + def _update_temperature_store(self, eventtime: float) -> float: # XXX - If klippy is not connected, set values to zero # as they are unknown? for sensor, vals in self.last_temps.items(): @@ -127,6 +127,7 @@ class DataStore: for val, item in zip(vals[1:], ["targets", "powers", "speeds"]): if item in self.temperature_store[sensor]: self.temperature_store[sensor][item].append(val) + return eventtime + TEMP_UPDATE_TIME async def _handle_temp_store_request(self, web_request: WebRequest @@ -137,7 +138,7 @@ class DataStore: return store async def close(self) -> None: - self.temp_update_cb.stop() + self.temp_update_timer.stop() def _update_gcode_store(self, response: str) -> None: curtime = time.time()