diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2021-01-10 01:33:11 +0200 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2021-01-10 01:33:11 +0200 |
commit | 9f7c1dc61ba3247b698ce177d1e7e7de8e76777d (patch) | |
tree | 6047d497cd97e84e0fa23c984fb15c0a07586816 | |
parent | 85ba383f8836070a43539cfa0a6938dc0e8ec299 (diff) | |
download | apscheduler-9f7c1dc61ba3247b698ce177d1e7e7de8e76777d.tar.gz |
Fixed scheduler shutdown hanging after trying to start it twice
Fixes #441.
-rw-r--r-- | apscheduler/schedulers/background.py | 4 | ||||
-rw-r--r-- | apscheduler/schedulers/blocking.py | 4 | ||||
-rw-r--r-- | docs/versionhistory.rst | 2 |
3 files changed, 8 insertions, 2 deletions
diff --git a/apscheduler/schedulers/background.py b/apscheduler/schedulers/background.py index 03f2982..bb8f77d 100644 --- a/apscheduler/schedulers/background.py +++ b/apscheduler/schedulers/background.py @@ -29,7 +29,9 @@ class BackgroundScheduler(BlockingScheduler): super(BackgroundScheduler, self)._configure(config) def start(self, *args, **kwargs): - self._event = Event() + if self._event is None or self._event.is_set(): + self._event = Event() + BaseScheduler.start(self, *args, **kwargs) self._thread = Thread(target=self._main_loop, name='APScheduler') self._thread.daemon = self._daemon diff --git a/apscheduler/schedulers/blocking.py b/apscheduler/schedulers/blocking.py index e617157..4ecc9f6 100644 --- a/apscheduler/schedulers/blocking.py +++ b/apscheduler/schedulers/blocking.py @@ -14,7 +14,9 @@ class BlockingScheduler(BaseScheduler): _event = None def start(self, *args, **kwargs): - self._event = Event() + if self._event is None or self._event.is_set(): + self._event = Event() + super(BlockingScheduler, self).start(*args, **kwargs) self._main_loop() diff --git a/docs/versionhistory.rst b/docs/versionhistory.rst index e210506..488adba 100644 --- a/docs/versionhistory.rst +++ b/docs/versionhistory.rst @@ -15,6 +15,8 @@ APScheduler, see the :doc:`migration section <migration>`. * Ensured that jitter is always non-negative to prevent triggers from firing more often than intended * Added PySide2 support (PR by Abdulla Ibrahim) +* Fixed ``BlockingScheduler`` and ``BackgroundScheduler`` shutdown hanging after the user has + erroneously tried to start it twice 3.6.3 |