Skip to content

Commit 234aaa1

Browse files
committed
allow a special error code
1 parent 360e302 commit 234aaa1

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

async_utils/sig_service.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from __future__ import annotations
1616

17+
import enum
1718
import select
1819
import signal
1920
import socket
@@ -22,7 +23,7 @@
2223
from types import FrameType
2324
from typing import Any
2425

25-
type SignalCallback = Callable[[signal.Signals], Any]
26+
type SignalCallback = Callable[[signal.Signals | SpecialExit], Any]
2627
type StartStopCall = Callable[[], Any]
2728
type _HANDLER = Callable[[int, FrameType | None], Any] | int | signal.Handlers | None
2829

@@ -32,6 +33,10 @@
3233
actual = tuple(e for name, e in signal.Signals.__members__.items() if name in possible)
3334

3435

36+
class SpecialExit(enum.IntEnum):
37+
EXIT = 252
38+
39+
3540
class SignalService:
3641
"""Meant for graceful signal handling where the main thread is only used for signal handling.
3742
This should be paired with event loops being run in threads."""
@@ -74,9 +79,10 @@ def run(self):
7479

7580
select.select([self.ss], [], [])
7681
data, *_ = self.ss.recv(4096)
82+
sig = signal.Signals(data) if data != 252 else SpecialExit.EXIT
7783

7884
for cb in self._cbs:
79-
cb(signal.Signals(data))
85+
cb(sig)
8086

8187
for join in self._joins:
8288
join()

0 commit comments

Comments
 (0)