Skip to content

Commit 0e24f86

Browse files
committed
Support external kernels
1 parent c1d689e commit 0e24f86

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

jupyter_server/serverapp.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import urllib
2525
import warnings
2626
from base64 import encodebytes
27+
from pathlib import Path
2728

2829
from jupyter_client.kernelspec import KernelSpecManager
2930
from jupyter_client.manager import KernelManager
@@ -1638,6 +1639,8 @@ def _update_notebook_dir(self, change):
16381639
self.log.warning(_i18n("notebook_dir is deprecated, use root_dir"))
16391640
self.root_dir = change["new"]
16401641

1642+
external_connection_dir = Unicode(None, allow_none=True, config=True, help=_i18n("The directory to look at for external kernel connection files."))
1643+
16411644
root_dir = Unicode(config=True, help=_i18n("The directory to use for notebooks and kernels."))
16421645
_root_dir_set = False
16431646

@@ -1873,10 +1876,14 @@ def init_configurables(self):
18731876
self.kernel_spec_manager = self.kernel_spec_manager_class(
18741877
parent=self,
18751878
)
1879+
external_connection_dir = self.external_connection_dir
1880+
if external_connection_dir is None:
1881+
external_connection_dir = str(Path(self.runtime_dir) / "external_kernels")
18761882
self.kernel_manager = self.kernel_manager_class(
18771883
parent=self,
18781884
log=self.log,
18791885
connection_dir=self.runtime_dir,
1886+
external_connection_dir=external_connection_dir,
18801887
kernel_spec_manager=self.kernel_spec_manager,
18811888
)
18821889
self.contents_manager = self.contents_manager_class(

jupyter_server/services/kernels/connection/channels.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ def disconnect(self):
410410
)
411411

412412
# start buffering instead of closing if this was the last connection
413-
if self.multi_kernel_manager._kernel_connections[self.kernel_id] == 0:
413+
if self.kernel_id in self.multi_kernel_manager._kernel_connections and self.multi_kernel_manager._kernel_connections[self.kernel_id] == 0:
414414
self.multi_kernel_manager.start_buffering(
415415
self.kernel_id, self.session_key, self.channels
416416
)

0 commit comments

Comments
 (0)