aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/apscheduler/schedulers/background.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/apscheduler/schedulers/background.py')
-rw-r--r--.venv/lib/python3.12/site-packages/apscheduler/schedulers/background.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/apscheduler/schedulers/background.py b/.venv/lib/python3.12/site-packages/apscheduler/schedulers/background.py
new file mode 100644
index 00000000..7d8d1bc7
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/apscheduler/schedulers/background.py
@@ -0,0 +1,42 @@
+from threading import Event, Thread
+
+from apscheduler.schedulers.base import BaseScheduler
+from apscheduler.schedulers.blocking import BlockingScheduler
+from apscheduler.util import asbool
+
+
+class BackgroundScheduler(BlockingScheduler):
+ """
+ A scheduler that runs in the background using a separate thread
+ (:meth:`~apscheduler.schedulers.base.BaseScheduler.start` will return immediately).
+
+ Extra options:
+
+ ========== =============================================================================
+ ``daemon`` Set the ``daemon`` option in the background thread (defaults to ``True``, see
+ `the documentation
+ <https://docs.python.org/3.4/library/threading.html#thread-objects>`_
+ for further details)
+ ========== =============================================================================
+ """
+
+ _thread = None
+
+ def _configure(self, config):
+ self._daemon = asbool(config.pop("daemon", True))
+ super()._configure(config)
+
+ def start(self, *args, **kwargs):
+ 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", daemon=self._daemon
+ )
+ self._thread.start()
+
+ def shutdown(self, *args, **kwargs):
+ super().shutdown(*args, **kwargs)
+ self._thread.join()
+ del self._thread