aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/apscheduler/schedulers/blocking.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/apscheduler/schedulers/blocking.py')
-rw-r--r--.venv/lib/python3.12/site-packages/apscheduler/schedulers/blocking.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/apscheduler/schedulers/blocking.py b/.venv/lib/python3.12/site-packages/apscheduler/schedulers/blocking.py
new file mode 100644
index 00000000..0330885d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/apscheduler/schedulers/blocking.py
@@ -0,0 +1,33 @@
+from threading import TIMEOUT_MAX, Event
+
+from apscheduler.schedulers.base import STATE_STOPPED, BaseScheduler
+
+
+class BlockingScheduler(BaseScheduler):
+ """
+ A scheduler that runs in the foreground
+ (:meth:`~apscheduler.schedulers.base.BaseScheduler.start` will block).
+ """
+
+ _event = None
+
+ def start(self, *args, **kwargs):
+ if self._event is None or self._event.is_set():
+ self._event = Event()
+
+ super().start(*args, **kwargs)
+ self._main_loop()
+
+ def shutdown(self, wait=True):
+ super().shutdown(wait)
+ self._event.set()
+
+ def _main_loop(self):
+ wait_seconds = TIMEOUT_MAX
+ while self.state != STATE_STOPPED:
+ self._event.wait(wait_seconds)
+ self._event.clear()
+ wait_seconds = self._process_jobs()
+
+ def wakeup(self):
+ self._event.set()