25 lines
769 B
Python
25 lines
769 B
Python
from time import sleep
|
|
import traceback
|
|
from abc import abstractmethod, ABC
|
|
|
|
|
|
class MuleBase(ABC):
|
|
def __init__(self, mule_name, logger, sleep_secs):
|
|
self.name = mule_name
|
|
self.logger = logger
|
|
self.sleep_secs = sleep_secs
|
|
|
|
@abstractmethod
|
|
def loop(self):
|
|
pass
|
|
|
|
def __call__(self):
|
|
while True:
|
|
try:
|
|
self.loop()
|
|
self.logger.info(f'[{self.name}] Completed work, sleeping (sleep_secs={self.sleep_secs}).')
|
|
except Exception as ex:
|
|
self.logger.error(f'[{self.name}] Task failed, sleeping before restarting (sleep_secs={self.sleep_secs}, exception={str(ex)}).\n{traceback.format_exc()}')
|
|
finally:
|
|
sleep(self.sleep_secs)
|