diff --git a/apps/utils/thread.py b/apps/utils/thread.py new file mode 100644 index 00000000..bd47c8b4 --- /dev/null +++ b/apps/utils/thread.py @@ -0,0 +1,23 @@ +import threading +import logging +from apps.utils.tasks import send_mail_task +import traceback + +logger = logging.getLogger('log') + +class MyThread(threading.Thread): + def __init__(self, log_err=False, send_err=False): + super().__init__() + self.send_err = send_err + self.log_err = log_err + + def run(self): + try: + if self._target: + self._target(*self._args, **self._kwargs) + except Exception as e: + if self.log_err: + logger.error(f"Thread error: {e}", exc_info=False) + if self.send_err: + send_mail_task.delay(message=traceback.format_exc()) + raise \ No newline at end of file