diff -r 0fab0af57950 -r 2747d6e72eb8 runtime/Worker.py --- a/runtime/Worker.py Wed Mar 13 10:02:11 2019 +0300 +++ b/runtime/Worker.py Wed Mar 13 10:19:30 2019 +0300 @@ -51,6 +51,16 @@ self.free = Condition(self.mutex) self.job = None + def reraise(self, job): + """ + reraise exception happend in a job + @param job: job where original exception happend + """ + exc_type = job.exc_info[0] + exc_value = job.exc_info[1] + exc_traceback = job.exc_info[2] + six.reraise(exc_type, exc_value, exc_traceback) + def runloop(self, *args, **kwargs): """ meant to be called by worker thread (blocking) @@ -60,11 +70,8 @@ if args or kwargs: _job = job(*args, **kwargs) _job.do() - if _job.success: - # result is ignored - pass - else: - raise _job.exc_info[0], _job.exc_info[1], _job.exc_info[2] + if not _job.success: + self.reraise(_job) while not self._finish: self.todo.wait() @@ -106,10 +113,7 @@ if _job.success: return _job.result else: - exc_type = _job.exc_info[0] - exc_value = _job.exc_info[1] - exc_traceback = _job.exc_info[2] - six.reraise(exc_type, exc_value, exc_traceback) + self.reraise(_job) def quit(self): """