From 6534d324f3dce2e1e4927932660d5e5e8bcab202 Mon Sep 17 00:00:00 2001 From: Miguel Grinberg Date: Wed, 11 Dec 2019 22:50:25 +0000 Subject: [PATCH] Initialize the client's SIGINT signal handler if a client is created (Fixes #147) --- engineio/client.py | 6 +++++- examples/client/asyncio/simple_client.py | 5 ++++- examples/client/threads/simple_client.py | 5 ++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/engineio/client.py b/engineio/client.py index 0071eebc..51a21d36 100644 --- a/engineio/client.py +++ b/engineio/client.py @@ -46,7 +46,7 @@ def signal_handler(sig, frame): return signal.default_int_handler(sig, frame) -original_signal_handler = signal.signal(signal.SIGINT, signal_handler) +original_signal_handler = None class Client(object): @@ -76,6 +76,10 @@ def __init__(self, json=None, request_timeout=5, ssl_verify=True): + global original_signal_handler + if original_signal_handler is None: + original_signal_handler = signal.signal(signal.SIGINT, + signal_handler) self.handlers = {} self.base_url = None self.transports = None diff --git a/examples/client/asyncio/simple_client.py b/examples/client/asyncio/simple_client.py index 4197f8d1..c2c89605 100644 --- a/examples/client/asyncio/simple_client.py +++ b/examples/client/asyncio/simple_client.py @@ -5,6 +5,7 @@ loop = asyncio.get_event_loop() eio = engineio.AsyncClient() exit_event = asyncio.Event() +original_signal_handler = None async def send_hello(): @@ -33,6 +34,8 @@ def on_message(data): def signal_handler(sig, frame): exit_event.set() print('exiting') + if callable(original_signal_handler): + original_signal_handler(sig, frame) async def start_client(): @@ -41,5 +44,5 @@ async def start_client(): if __name__ == '__main__': - signal.signal(signal.SIGINT, signal_handler) + original_signal_handler = signal.signal(signal.SIGINT, signal_handler) loop.run_until_complete(start_client()) diff --git a/examples/client/threads/simple_client.py b/examples/client/threads/simple_client.py index b95c23af..a6b10f63 100644 --- a/examples/client/threads/simple_client.py +++ b/examples/client/threads/simple_client.py @@ -4,6 +4,7 @@ eio = engineio.Client() exit_event = threading.Event() +original_signal_handler = None def send_hello(): @@ -29,9 +30,11 @@ def on_message(data): def signal_handler(sig, frame): exit_event.set() print('exiting') + if callable(original_signal_handler): + original_signal_handler(sig, frame) if __name__ == '__main__': - signal.signal(signal.SIGINT, signal_handler) + original_signal_handler = signal.signal(signal.SIGINT, signal_handler) eio.connect('http://localhost:5000') eio.wait()