From 1bc2bb3605101aa1a56cce5a02fba4648cae0485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Thu, 19 Oct 2023 10:59:00 +0200 Subject: [PATCH] Enhances signal handling, adds force exit capability --- src/pydase/server/server.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/pydase/server/server.py b/src/pydase/server/server.py index 454739f..3b32396 100644 --- a/src/pydase/server/server.py +++ b/src/pydase/server/server.py @@ -358,20 +358,16 @@ class Server: # Signals can only be listened to from the main thread. return - try: - for sig in HANDLED_SIGNALS: - self._loop.add_signal_handler(sig, self.handle_exit, sig, None) - except NotImplementedError: - # Windows - for sig in HANDLED_SIGNALS: - signal.signal(sig, self.handle_exit) + for sig in HANDLED_SIGNALS: + signal.signal(sig, self.handle_exit) def handle_exit(self, sig: int = 0, frame: Optional[FrameType] = None) -> None: - logger.info("Handling exit") if self.should_exit and sig == signal.SIGINT: - self.force_exit = True + logger.warning(f"Received signal {sig}, forcing exit...") + os._exit(1) else: self.should_exit = True + logger.warning(f"Received signal {sig}, exiting...") def custom_exception_handler( self, loop: asyncio.AbstractEventLoop, context: dict[str, Any]