X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=renderer.py;h=2f835b98f07c6f42b6b03f8813e49941668fec12;hb=2b7583ad79a2adb41b08a1086a9a780da83b776c;hp=5f80e045ed886784a5b17579c70a69f009ed3baf;hpb=ba913d3c5ec6fd5e229398ebfe9e073aaae7d73c;p=kiosk.git diff --git a/renderer.py b/renderer.py index 5f80e04..2f835b9 100644 --- a/renderer.py +++ b/renderer.py @@ -1,10 +1,14 @@ #!/usr/bin/env python3 from abc import ABC, abstractmethod -from datetime import datetime -from decorators import invocation_logged +import logging import time -from typing import Dict, List, Optional, Set +from typing import Dict, Optional, Set + +from pyutils.decorator_utils import invocation_logged + + +logger = logging.getLogger(__file__) class renderer(ABC): @@ -44,26 +48,32 @@ class abstaining_renderer(renderer): while True: key = self.should_render(keys_to_skip) if key is None: + logger.info( + f'renderer: Found nothing to do in "{self.get_name()}"; returning.' + ) break if key in tries_per_key: tries_per_key[key] += 1 else: tries_per_key[key] = 0 + op = f'{self.get_name()}.{key}' if tries_per_key[key] >= 3: - print( - 'renderer: Too many failures for "%s.%s", giving up' - % (self.get_name(), key) + logger.warning( + f'renderer: Too many failures in "{op}"; giving up.' ) keys_to_skip.add(key) else: - msg = 'renderer: executing "%s.%s"' % (self.get_name(), key) + msg = f'renderer: executing "{op}"' if tries_per_key[key] > 1: - msg = msg + " (retry #%d)" % tries_per_key[key] - print(msg) + msg = msg + f' (retry #{tries_per_key[key]})' + logger.info(msg) if self.periodic_render(key): + logger.debug(f'renderer: {op} succeeded.') self.last_runs[key] = time.time() + else: + logger.warning(f'renderer: {op} failed; returned False.') @invocation_logged @abstractmethod @@ -72,31 +82,3 @@ class abstaining_renderer(renderer): def get_name(self) -> str: return self.__class__.__name__ - - -class debuggable_abstaining_renderer(abstaining_renderer): - def __init__(self, name_to_timeout_dict: Dict[str, int], debug: bool) -> None: - super(debuggable_abstaining_renderer, self).__init__(name_to_timeout_dict) - self.debug = debug - - def debug_prefix(self) -> str: - return self.get_name() - - def being_debugged(self) -> bool: - return self.debug - - def debug_print(self, template: str, *args) -> None: - try: - if self.being_debugged(): - if args: - msg = template.format(args) - else: - msg = template - - # current date and time - now = datetime.now() - timestamp = now.strftime("%d-%b-%Y (%H:%M:%S.%f)") - print("%s(%s): %s" % (self.debug_prefix(), timestamp, msg)) - except Exception as e: - print("Exception in debug_print!") - print(e)