Skip to content

Commit a0b1e65

Browse files
committed
Minor refactor to preserve MappingKernelManager behavior
1 parent a03eda3 commit a0b1e65

File tree

6 files changed

+31
-16
lines changed

6 files changed

+31
-16
lines changed

jupyter_server/serverapp.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1224,7 +1224,7 @@ def init_configurables(self):
12241224
if self.gateway_config.gateway_enabled:
12251225
self.kernel_manager_class = 'jupyter_server.gateway.managers.GatewayKernelManager'
12261226
self.session_manager_class = 'jupyter_server.gateway.managers.GatewaySessionManager'
1227-
self.kernel_finder = GatewayKernelFinder(parent=self) # no providers here, alway go remote
1227+
self.kernel_finder = GatewayKernelFinder(parent=self) # no providers here, always go remote
12281228
else:
12291229
if self.kernel_providers:
12301230
self.kernel_finder = KernelFinder(self.kernel_providers)

jupyter_server/services/kernels/handlers.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,17 @@ class KernelActionHandler(APIHandler):
8080
def post(self, kernel_id, action):
8181
km = self.kernel_manager
8282
if action == 'interrupt':
83-
kernel = km.get_kernel(kernel_id)
84-
# Don't interrupt a kernel while it's still starting
85-
yield kernel.client_ready()
86-
kernel.interrupt()
87-
self.set_status(204)
88-
if action == 'restart':
83+
try:
84+
yield maybe_future(km.interrupt_kernel(kernel_id))
85+
except web.HTTPError:
86+
raise
87+
except Exception as e:
88+
self.log.error("Exception interrupting kernel", exc_info=True)
89+
self.set_status(500)
90+
else:
91+
self.set_status(204)
8992

93+
if action == 'restart':
9094
try:
9195
yield maybe_future(km.restart_kernel(kernel_id))
9296
except web.HTTPError:

jupyter_server/services/kernels/kernelmanager.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,17 @@ def shutdown_kernel(self, kernel_id, now=False):
405405
type=kernel.kernel_type
406406
).dec()
407407

408+
@gen.coroutine
409+
def interrupt_kernel(self, kernel_id):
410+
"""Interrupt a kernel by kernel_id. """
411+
412+
self._check_kernel_id(kernel_id)
413+
kernel = self.get_kernel(kernel_id)
414+
415+
# Don't interrupt a kernel while it's still starting
416+
yield kernel.client_ready()
417+
kernel.interrupt()
418+
408419
@gen.coroutine
409420
def restart_kernel(self, kernel_id):
410421
"""Restart a kernel by kernel_id

jupyter_server/services/kernelspecs/handlers.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def get(self):
6565
model['kernelspecs'] = specs = {}
6666

6767
found_specs = yield maybe_future(kf.find_kernels())
68-
for kernel_name, kernel_info in found_specs.items():
68+
for kernel_name, kernel_info in found_specs:
6969
try:
7070
if is_kernelspec_model(kernel_info):
7171
d = kernel_info
@@ -88,10 +88,13 @@ def get(self, kernel_name):
8888
# TODO: Do we actually want all kernel type names to be case-insensitive?
8989
kernel_name = kernel_name.lower()
9090
found_specs = yield maybe_future(kf.find_kernels())
91-
for name, info in found_specs.items():
91+
for name, kernel_info in found_specs:
9292
if name == kernel_name:
93-
model = kernelspec_model(self, kernel_name, info,
94-
info['resource_dir'])
93+
if is_kernelspec_model(kernel_info):
94+
model = kernel_info
95+
else:
96+
model = kernelspec_model(self, kernel_name, kernel_info,
97+
kernel_info['resource_dir'])
9598
self.set_header("Content-Type", 'application/json')
9699
return self.finish(json.dumps(model))
97100

jupyter_server/services/sessions/sessionmanager.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,6 @@ def create_session(self, path=None, name=None, type=None, kernel_name=None, kern
9090
self.save_session(session_id, path=path, name=name, type=type, kernel_id=kernel_id)
9191
)
9292

93-
# Now wait for the kernel to finish starting.
94-
yield self.kernel_manager.get_kernel(kernel_id).client_ready()
95-
9693
# py2-compat
9794
raise gen.Return(result)
9895

@@ -101,7 +98,7 @@ def start_kernel_for_session(self, session_id, path, name, type, kernel_name):
10198
"""Start a new kernel for a given session."""
10299
# allow contents manager to specify kernels cwd
103100
kernel_path = self.contents_manager.get_kernel_path(path=path)
104-
kernel_id = yield maybe_future(self.kernel_manager.start_launching_kernel(
101+
kernel_id = yield maybe_future(self.kernel_manager.start_kernel(
105102
path=kernel_path, kernel_name=kernel_name,))
106103
# py2-compat
107104
raise gen.Return(kernel_id)

jupyter_server/tests/test_gateway.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ def is_kernel_running(self, kernel_id):
294294
return False
295295

296296
def create_kernel(self, kernel_name):
297-
"""Issues request to retart the given kernel
297+
"""Issues request to start the given kernel
298298
"""
299299
with mocked_gateway:
300300
kwargs = dict()

0 commit comments

Comments
 (0)