Skip to content

Commit 90cbf19

Browse files
committed
[IMP] queue_job_cron_jobrunner: improve how exception values are stored in job
1 parent 11122f4 commit 90cbf19

1 file changed

Lines changed: 17 additions & 3 deletions

File tree

queue_job_cron_jobrunner/models/queue_job.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,13 @@ def _process(self, commit=False):
9494
job.store()
9595
_logger.debug("%s postponed", job)
9696

97-
except (FailedJobError, Exception):
97+
except (FailedJobError, Exception) as orig_exception:
9898
with StringIO() as buff:
9999
traceback.print_exc(file=buff)
100-
_logger.error(buff.getvalue())
101-
job.set_failed(exc_info=buff.getvalue())
100+
traceback_txt = buff.getvalue()
101+
_logger.error(traceback_txt)
102+
vals = self._get_failure_values(job, traceback_txt, orig_exception)
103+
job.set_failed(**vals)
102104
job.store()
103105

104106
if commit: # pragma: no cover
@@ -109,6 +111,18 @@ def _process(self, commit=False):
109111
job.enqueue_waiting()
110112
_logger.debug("%s enqueue depends done", job)
111113

114+
def _get_failure_values(self, job, traceback_txt, orig_exception):
115+
"""Collect relevant data from exception."""
116+
exception_name = orig_exception.__class__.__name__
117+
if hasattr(orig_exception, "__module__"):
118+
exception_name = orig_exception.__module__ + "." + exception_name
119+
exc_message = getattr(orig_exception, "name", str(orig_exception))
120+
return {
121+
"exc_info": traceback_txt,
122+
"exc_name": exception_name,
123+
"exc_message": exc_message,
124+
}
125+
112126
@api.model
113127
def _job_runner(self, commit=True):
114128
"""Short-lived job runner, triggered by async crons"""

0 commit comments

Comments
 (0)