X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=renderer.py;h=2be7780c1c85ec02808abea8eb55fbd00fdbea57;hb=5e241dc47e497c547463cecc07946ea6882835a7;hp=bfd6a9012267e202f0004c68ee543290b3765c97;hpb=f2f05b2edb16cc6a8c4e183e5ae3451d291cc428;p=kiosk.git diff --git a/renderer.py b/renderer.py index bfd6a90..2be7780 100644 --- a/renderer.py +++ b/renderer.py @@ -1,18 +1,24 @@ import time from datetime import datetime +from decorators import invokation_logged + class renderer(object): """Base class for something that can render.""" + + @invokation_logged def render(self): pass def get_name(self): return self.__class__.__name__ + class abstaining_renderer(renderer): """A renderer that doesn't do it all the time.""" + def __init__(self, name_to_timeout_dict): - self.name_to_timeout_dict = name_to_timeout_dict; + self.name_to_timeout_dict = name_to_timeout_dict self.last_runs = {} for key in name_to_timeout_dict: self.last_runs[key] = 0 @@ -20,8 +26,9 @@ class abstaining_renderer(renderer): def should_render(self, keys_to_skip): now = time.time() for key in self.name_to_timeout_dict: - if (((now - self.last_runs[key]) > self.name_to_timeout_dict[key]) and - key not in keys_to_skip): + if ( + (now - self.last_runs[key]) > self.name_to_timeout_dict[key] + ) and key not in keys_to_skip: return key return None @@ -39,23 +46,27 @@ class abstaining_renderer(renderer): tries_per_key[key] = 0 if tries_per_key[key] >= 3: - print('renderer: Too many failures/retries for "%s.%s", ' + - ', giving up for now' % (self.get_name(), key)) + print( + 'renderer: Too many failures for "%s.%s", giving up' + % (self.get_name(), key) + ) keys_to_skip.add(key) else: msg = 'renderer: executing "%s.%s"' % (self.get_name(), key) - if (tries_per_key[key] > 1): + if tries_per_key[key] > 1: msg = msg + " (retry #%d)" % tries_per_key[key] print(msg) - if (self.periodic_render(key)): + if self.periodic_render(key): self.last_runs[key] = time.time() + @invokation_logged def periodic_render(self, key): pass + class debuggable_abstaining_renderer(abstaining_renderer): def __init__(self, name_to_timeout_dict, debug): - super(debuggable_abstaining_renderer, self).__init__(name_to_timeout_dict); + super(debuggable_abstaining_renderer, self).__init__(name_to_timeout_dict) self.debug = debug def debug_prefix(self):