Update cabin camera URL.
[kiosk.git] / renderer.py
index 5f80e045ed886784a5b17579c70a69f009ed3baf..55f540c026f481d577dade1b7936750865fae42b 100644 (file)
@@ -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(__name__)
 
 
 class renderer(ABC):
@@ -44,26 +48,28 @@ class abstaining_renderer(renderer):
         while True:
             key = self.should_render(keys_to_skip)
             if key is None:
+                logger.info(f'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'Too many failures in "{op}"; giving up.')
                 keys_to_skip.add(key)
             else:
-                msg = 'renderer: executing "%s.%s"' % (self.get_name(), key)
+                msg = f'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'"{op}" succeeded.')
                     self.last_runs[key] = time.time()
+                else:
+                    logger.warning(f'"{op}" failed; returned False.')
 
     @invocation_logged
     @abstractmethod
@@ -72,31 +78,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)