Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 3 additions & 23 deletions jupyter_client/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -642,9 +642,9 @@ async def _kill_kernel(self):
# TerminateProcess() on Win32).
try:
if hasattr(signal, 'SIGKILL'):
await self.signal_kernel(signal.SIGKILL)
self.signal_kernel(signal.SIGKILL)
else:
await self.kernel.kill()
self.kernel.kill()
except OSError as e:
# In Windows, we will get an Access Denied error if the process
# has already terminated. Ignore it.
Expand Down Expand Up @@ -686,7 +686,7 @@ async def interrupt_kernel(self):
from .win_interrupt import send_interrupt
send_interrupt(self.kernel.win32_interrupt_event)
else:
await self.signal_kernel(signal.SIGINT)
self.signal_kernel(signal.SIGINT)

elif interrupt_mode == 'message':
msg = self.session.msg("interrupt_request", content={})
Expand All @@ -695,26 +695,6 @@ async def interrupt_kernel(self):
else:
raise RuntimeError("Cannot interrupt kernel. No kernel is running!")

async def signal_kernel(self, signum):
"""Sends a signal to the process group of the kernel (this
usually includes the kernel and any subprocesses spawned by
the kernel).

Note that since only SIGTERM is supported on Windows, this function is
only useful on Unix systems.
"""
if self.has_kernel:
if hasattr(os, "getpgid") and hasattr(os, "killpg"):
try:
pgid = os.getpgid(self.kernel.pid)
os.killpg(pgid, signum)
return
except OSError:
pass
self.kernel.send_signal(signum)
else:
raise RuntimeError("Cannot signal kernel. No kernel is running!")

async def is_alive(self):
"""Is the kernel process still running?"""
if self.has_kernel:
Expand Down