diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2022-09-03 21:32:21 +0300 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2022-09-03 21:34:40 +0300 |
commit | efc7b924734ea0f393d0daf16b000a79f690dfd2 (patch) | |
tree | 602a5cc040212138f326dad6a5138d23755582c8 /src/apscheduler/workers/sync.py | |
parent | 87d6efbda4c1b5c5a0d502bdd37bf72189054892 (diff) | |
download | apscheduler-efc7b924734ea0f393d0daf16b000a79f690dfd2.tar.gz |
Don't report cancellations as crashes on Python 3.7
Diffstat (limited to 'src/apscheduler/workers/sync.py')
-rw-r--r-- | src/apscheduler/workers/sync.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/apscheduler/workers/sync.py b/src/apscheduler/workers/sync.py index 26e4df6..41279d9 100644 --- a/src/apscheduler/workers/sync.py +++ b/src/apscheduler/workers/sync.py @@ -167,6 +167,7 @@ class Worker: if start_future: start_future.set_result(None) + exception: BaseException | None = None try: while self._state is RunState.started: available_slots = self.max_concurrent_jobs - len(self._running_jobs) @@ -184,17 +185,20 @@ class Worker: self._wakeup_event.wait() self._wakeup_event = threading.Event() except BaseException as exc: + exception = exc + raise + finally: self._state = RunState.stopped - if isinstance(exc, Exception): + if not exception: + self.logger.info("Worker stopped") + elif isinstance(exception, Exception): self.logger.exception("Worker crashed") - else: - self.logger.info(f"Worker stopped due to {exc.__class__.__name__}") + elif exception: + self.logger.info( + f"Worker stopped due to {exception.__class__.__name__}" + ) - self.event_broker.publish_local(WorkerStopped(exception=exc)) - else: - self._state = RunState.stopped - self.logger.info("Worker stopped") - self.event_broker.publish_local(WorkerStopped()) + self.event_broker.publish_local(WorkerStopped(exception=exception)) def _run_job(self, job: Job, func: Callable) -> None: try: |