Skip to content

Commit 7e36074

Browse files
committed
skip signal handling in non main thread
1 parent 731854e commit 7e36074

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

metaflow/runner/subprocess_manager.py

+12-6
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,19 @@ def __init__(self):
7878
self.commands: Dict[int, CommandManager] = {}
7979

8080
try:
81-
loop = asyncio.get_running_loop()
82-
loop.add_signal_handler(
83-
signal.SIGINT,
84-
lambda: asyncio.create_task(self._async_handle_sigint()),
81+
try:
82+
loop = asyncio.get_running_loop()
83+
loop.add_signal_handler(
84+
signal.SIGINT,
85+
lambda: asyncio.create_task(self._async_handle_sigint()),
86+
)
87+
except RuntimeError:
88+
signal.signal(signal.SIGINT, self._handle_sigint)
89+
except ValueError:
90+
sys.stderr.write(
91+
"Warning: Unable to set signal handlers in non-main thread. "
92+
"Ctrl+C handling will be limited.\n"
8593
)
86-
except RuntimeError:
87-
signal.signal(signal.SIGINT, self._handle_sigint)
8894

8995
async def _async_handle_sigint(self):
9096
pids = [

0 commit comments

Comments
 (0)