Skip to content

Commit a47ccfb

Browse files
committed
Support external kernels
1 parent c1d689e commit a47ccfb

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

jupyter_server/serverapp.py

Lines changed: 12 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,13 @@ 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(
1643+
None,
1644+
allow_none=True,
1645+
config=True,
1646+
help=_i18n("The directory to look at for external kernel connection files."),
1647+
)
1648+
16411649
root_dir = Unicode(config=True, help=_i18n("The directory to use for notebooks and kernels."))
16421650
_root_dir_set = False
16431651

@@ -1873,10 +1881,14 @@ def init_configurables(self):
18731881
self.kernel_spec_manager = self.kernel_spec_manager_class(
18741882
parent=self,
18751883
)
1884+
external_connection_dir = self.external_connection_dir
1885+
if external_connection_dir is None:
1886+
external_connection_dir = str(Path(self.runtime_dir) / "external_kernels")
18761887
self.kernel_manager = self.kernel_manager_class(
18771888
parent=self,
18781889
log=self.log,
18791890
connection_dir=self.runtime_dir,
1891+
external_connection_dir=external_connection_dir,
18801892
kernel_spec_manager=self.kernel_spec_manager,
18811893
)
18821894
self.contents_manager = self.contents_manager_class(

jupyter_server/services/kernels/connection/channels.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,10 @@ 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 (
414+
self.kernel_id in self.multi_kernel_manager._kernel_connections
415+
and self.multi_kernel_manager._kernel_connections[self.kernel_id] == 0
416+
):
414417
self.multi_kernel_manager.start_buffering(
415418
self.kernel_id, self.session_key, self.channels
416419
)

0 commit comments

Comments
 (0)