|
12 | 12 | from .backend import KartonBackend, KartonBind, KartonMetrics |
13 | 13 | from .base import KartonBase, KartonServiceBase |
14 | 14 | from .config import Config |
| 15 | +from .exceptions import TaskTimeoutError |
15 | 16 | from .resource import LocalResource |
16 | 17 | from .task import Task, TaskState |
17 | 18 | from .utils import timeout |
@@ -129,7 +130,10 @@ def __init__( |
129 | 130 | self.current_task: Optional[Task] = None |
130 | 131 | self._pre_hooks: List[Tuple[Optional[str], Callable[[Task], None]]] = [] |
131 | 132 | self._post_hooks: List[ |
132 | | - Tuple[Optional[str], Callable[[Task, Optional[Exception]], None]] |
| 133 | + Tuple[ |
| 134 | + Optional[str], |
| 135 | + Callable[[Task, Optional[BaseException]], None], |
| 136 | + ] |
133 | 137 | ] = [] |
134 | 138 |
|
135 | 139 | @abc.abstractmethod |
@@ -179,14 +183,14 @@ def internal_process(self, task: Task) -> None: |
179 | 183 | self.process(self.current_task) |
180 | 184 | else: |
181 | 185 | self.process(self.current_task) |
182 | | - except Exception as exc: |
| 186 | + except (Exception, TaskTimeoutError) as exc: |
183 | 187 | saved_exception = exc |
184 | 188 | raise |
185 | 189 | finally: |
186 | 190 | self._run_post_hooks(saved_exception) |
187 | 191 |
|
188 | 192 | self.log.info("Task done - %s", self.current_task.uid) |
189 | | - except Exception: |
| 193 | + except (Exception, TaskTimeoutError): |
190 | 194 | exc_info = sys.exc_info() |
191 | 195 | exception_str = traceback.format_exception(*exc_info) |
192 | 196 |
|
@@ -260,7 +264,7 @@ def add_pre_hook( |
260 | 264 |
|
261 | 265 | def add_post_hook( |
262 | 266 | self, |
263 | | - callback: Callable[[Task, Optional[Exception]], None], |
| 267 | + callback: Callable[[Task, Optional[BaseException]], None], |
264 | 268 | name: Optional[str] = None, |
265 | 269 | ) -> None: |
266 | 270 | """ |
@@ -289,7 +293,7 @@ def _run_pre_hooks(self) -> None: |
289 | 293 | else: |
290 | 294 | self.log.exception("Pre-hook failed") |
291 | 295 |
|
292 | | - def _run_post_hooks(self, exception: Optional[Exception]) -> None: |
| 296 | + def _run_post_hooks(self, exception: Optional[BaseException]) -> None: |
293 | 297 | """ |
294 | 298 | Run registered postprocessing hooks |
295 | 299 |
|
@@ -431,7 +435,7 @@ def _send_signaling_status_task_begin(self, task: Task) -> None: |
431 | 435 | self._send_signaling_status_task("task_begin") |
432 | 436 |
|
433 | 437 | def _send_signaling_status_task_end( |
434 | | - self, task: Task, ex: Optional[Exception] |
| 438 | + self, task: Task, ex: Optional[BaseException] |
435 | 439 | ) -> None: |
436 | 440 | """Send a begin status signaling task. |
437 | 441 |
|
|
0 commit comments