From c6b11cd67b3c930ec818df963c366a0a4824da53 Mon Sep 17 00:00:00 2001 From: nijenhofm Date: Wed, 22 Jan 2020 16:36:42 +0100 Subject: [PATCH] Added logging and retry --- flaskpagethread.py | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/flaskpagethread.py b/flaskpagethread.py index c460ba5..9910382 100644 --- a/flaskpagethread.py +++ b/flaskpagethread.py @@ -1,27 +1,44 @@ from time import sleep from threading import Thread +from logging import getLogger class FlaskPageThread(Thread): def __init__(self, delay, func, *args, **kwargs): - self.delay = delay - self.func = func - self.args = args - self.page = ("init", 500) - self.hhealthy = False name = kwargs.get("name", "FlaskPageThread") + self.delay = delay + self.func = func + self.args = args + self.page = ("init", 500) + self.healthy = False + self.retrycount = kwargs.get("retrycount", 3) + self.retrydelay = kwargs.get("retrydelay", 1) + self.log = kwargs.get("log", getLogger(name)) + self.log.debug("FlaskPageThread.__init__(%s)" % name) super().__init__(target=self.run, daemon=True, name=name) def genpage(self): - try: - data = self.func(*self.args) - self.page = (data, 200) - self.hhealthy = True - except Exception as e: - print("Exception: %s" % e) - self.page = ("Internal error", 500) - self.hhealthy = False + c = self.retrycount + while c > 0: + c-=1 + try: + self.log.debug("FlaskPageThread.genpage()") + data = self.func(*self.args) + self.page = (data, 200) + self.healthy = True + c=0 + except Exception as e: + print("Exception: %s" % e) + if c == 0: + self.page = ("Internal error", 500) + self.healthy = False + else: + # retry + self.log.warn("FlaskPageThread.genpage(): Retry %s" + % self.name) + sleep(self.retrydelay) def run(self): + self.log.debug("FlaskPageThread.run()") self.genpage() while True: sleep(self.delay)