summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2021-01-10 01:33:11 +0200
committerAlex Grönholm <alex.gronholm@nextday.fi>2021-01-10 01:33:11 +0200
commit9f7c1dc61ba3247b698ce177d1e7e7de8e76777d (patch)
tree6047d497cd97e84e0fa23c984fb15c0a07586816
parent85ba383f8836070a43539cfa0a6938dc0e8ec299 (diff)
downloadapscheduler-9f7c1dc61ba3247b698ce177d1e7e7de8e76777d.tar.gz
Fixed scheduler shutdown hanging after trying to start it twice
Fixes #441.
-rw-r--r--apscheduler/schedulers/background.py4
-rw-r--r--apscheduler/schedulers/blocking.py4
-rw-r--r--docs/versionhistory.rst2
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