Skip to content

Commit c551463

Browse files
author
Günther Jena
committed
add .shutdown to scheduler
1 parent 89a8a73 commit c551463

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# 0.4.7
2+
3+
* adding .shutdown method to schedulers
4+
15
# 0.4.6
26

37
* fix object_dictionary.read in LSS service

src/durand/scheduler.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ def cancel(self, entry: TEntry):
3333
@abstractmethod
3434
def lock(self):
3535
"""A global lock which can be used the assure thread safety"""
36+
37+
def shutdown(self):
38+
""" Shutting down the scheduler """
3639

3740

3841
class AsyncScheduler(AbstractScheduler):
@@ -56,6 +59,8 @@ def cancel(self, entry: asyncio.TimerHandle): # type: ignore[override]
5659
@property
5760
def lock(self):
5861
return self._lock
62+
63+
# nothing happens at shutdown, as no resources have to be freed
5964

6065

6166
class SyncScheduler(AbstractScheduler):
@@ -65,6 +70,7 @@ def __init__(self, lock: threading.Lock = None):
6570
self._lock = lock
6671
self._sched = sched.scheduler()
6772
self._wake_up = threading.Event()
73+
self._stop = False
6874

6975
def add(
7076
self, delay: float, callback, args=(), kwargs=None
@@ -82,10 +88,17 @@ def run(self):
8288
self._sched.run()
8389
self._wake_up.wait()
8490
self._wake_up.clear()
91+
with self._lock:
92+
if self._stop:
93+
break
8594

8695
@property
8796
def lock(self):
8897
return self._lock
98+
99+
def shutdown(self):
100+
self._wake_up.set()
101+
self._stop = True
89102

90103

91104
class VirtualScheduler(AbstractScheduler):

0 commit comments

Comments
 (0)