Skip to content

Commit f2845ea

Browse files
committed
change sig service use
1 parent 11604aa commit f2845ea

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

async_utils/sig_service.py

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,30 @@ class SignalService:
3636
"""Meant for graceful signal handling where the main thread is only used for signal handling.
3737
This should be paired with event loops being run in threads."""
3838

39-
def __init__(self, *, startup: list[StartStopCall], signal_cbs: list[SignalCallback], joins: list[StartStopCall]) -> None:
40-
self._startup: list[StartStopCall] = startup
41-
self._cbs: list[SignalCallback] = signal_cbs
42-
self._joins: list[StartStopCall] = joins
39+
def __init__(
40+
self,
41+
) -> None:
42+
self._startup: list[StartStopCall] = []
43+
self._cbs: list[SignalCallback] = []
44+
self._joins: list[StartStopCall] = []
45+
self.ss, self.cs = socket.socketpair()
46+
self.ss.setblocking(False)
47+
self.cs.setblocking(False)
48+
49+
def get_send_socket(self) -> socket.socket:
50+
return self.ss
51+
52+
def add_startup(self, job: StartStopCall):
53+
self._startup.append(job)
54+
55+
def add_signal_cb(self, cb: SignalCallback):
56+
self._cbs.append(cb)
57+
58+
def add_join(self, join: StartStopCall):
59+
self._joins.append(join)
4360

4461
def run(self):
45-
ss, cs = socket.socketpair()
46-
ss.setblocking(False)
47-
cs.setblocking(False)
48-
signal.set_wakeup_fd(cs.fileno())
62+
signal.set_wakeup_fd(self.cs.fileno())
4963

5064
original_handlers: list[_HANDLER] = []
5165

@@ -58,8 +72,8 @@ def run(self):
5872
for task_start in self._startup:
5973
task_start()
6074

61-
select.select([ss], [], [])
62-
data, *_ = ss.recv(4096)
75+
select.select([self.ss], [], [])
76+
data, *_ = self.ss.recv(4096)
6377

6478
for cb in self._cbs:
6579
cb(signal.Signals(data))

0 commit comments

Comments
 (0)