X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=state_tracker.py;h=11ce4c3b4198e5f7ff6e0406b35d8b65920b46d7;hb=fa4298fa508e00759565c246aef423ba28fedf31;hp=225584bb1a907314de374c9da159d7afb5c96cb1;hpb=497fb9e21f45ec08e1486abaee6dfa7b20b8a691;p=python_utils.git diff --git a/state_tracker.py b/state_tracker.py index 225584b..11ce4c3 100644 --- a/state_tracker.py +++ b/state_tracker.py @@ -9,7 +9,6 @@ from typing import Dict, Optional import pytz from thread_utils import background_thread -import math_utils logger = logging.getLogger(__name__) @@ -67,33 +66,34 @@ class StateTracker(ABC): """ self.now = datetime.datetime.now(tz=pytz.timezone("US/Pacific")) for update_id in sorted(self.last_reminder_ts.keys()): - refresh_secs = self.update_ids_to_update_secs[update_id] if force_all_updates_to_run: logger.debug('Forcing all updates to run') self.update( update_id, self.now, self.last_reminder_ts[update_id] ) self.last_reminder_ts[update_id] = self.now + return + + refresh_secs = self.update_ids_to_update_secs[update_id] + last_run = self.last_reminder_ts[update_id] + if last_run is None: # Never run before + logger.debug( + f'id {update_id} has never been run; running it now' + ) + self.update( + update_id, self.now, self.last_reminder_ts[update_id] + ) + self.last_reminder_ts[update_id] = self.now else: - last_run = self.last_reminder_ts[update_id] - if last_run is None: # Never run before - logger.debug( - f'id {update_id} has never been run; running it now' - ) + delta = self.now - last_run + if delta.total_seconds() >= refresh_secs: # Is overdue? + logger.debug(f'id {update_id} is overdue; running it now') self.update( - update_id, self.now, self.last_reminder_ts[update_id] + update_id, + self.now, + self.last_reminder_ts[update_id], ) self.last_reminder_ts[update_id] = self.now - else: - delta = self.now - last_run - if delta.total_seconds() >= refresh_secs: # Is overdue - logger.debug('id {update_id} is overdue; running it now') - self.update( - update_id, - self.now, - self.last_reminder_ts[update_id], - ) - self.last_reminder_ts[update_id] = self.now class AutomaticStateTracker(StateTracker): @@ -121,6 +121,7 @@ class AutomaticStateTracker(StateTracker): *, override_sleep_delay: Optional[float] = None, ) -> None: + import math_utils super().__init__(update_ids_to_update_secs) if override_sleep_delay is not None: logger.debug(f'Overriding sleep delay to {override_sleep_delay}')