ApplicantPortal/app/mules/mule.py
2025-03-12 20:43:26 -06:00

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)