diff --git a/jupyter_server/services/kernels/handlers.py b/jupyter_server/services/kernels/handlers.py index 0ebebf4a51..f312a84768 100644 --- a/jupyter_server/services/kernels/handlers.py +++ b/jupyter_server/services/kernels/handlers.py @@ -94,9 +94,9 @@ async def post(self, kernel_id, action): if action == "interrupt": await ensure_async(km.interrupt_kernel(kernel_id)) self.set_status(204) - if action == "restart": + if action == "restart" or action == "restart-in-place": try: - await km.restart_kernel(kernel_id) + await km.restart_kernel(kernel_id, restart_in_place=action == "restart-in-place") except Exception as e: message = "Exception restarting kernel" self.log.error(message, exc_info=True) @@ -113,7 +113,7 @@ async def post(self, kernel_id, action): # URL to handler mappings # ----------------------------------------------------------------------------- _kernel_id_regex = r"(?P\w+-\w+-\w+-\w+-\w+)" -_kernel_action_regex = r"(?Prestart|interrupt)" +_kernel_action_regex = r"(?Prestart|interrupt|restart-in-place)" default_handlers = [ (r"/api/kernels", MainKernelHandler), diff --git a/jupyter_server/services/kernels/kernelmanager.py b/jupyter_server/services/kernels/kernelmanager.py index f45fdff193..1fd5a22998 100644 --- a/jupyter_server/services/kernels/kernelmanager.py +++ b/jupyter_server/services/kernels/kernelmanager.py @@ -434,10 +434,12 @@ async def _async_shutdown_kernel(self, kernel_id, now=False, restart=False): shutdown_kernel = _async_shutdown_kernel - async def _async_restart_kernel(self, kernel_id, now=False): + async def _async_restart_kernel(self, kernel_id, now=False, restart_in_place=False): """Restart a kernel by kernel_id""" self._check_kernel_id(kernel_id) - await self.pinned_superclass._async_restart_kernel(self, kernel_id, now=now) + await self.pinned_superclass._async_restart_kernel( + self, kernel_id, now=now, restart_in_place=restart_in_place + ) kernel = self.get_kernel(kernel_id) # return a Future that will resolve when the kernel has successfully restarted channel = kernel.connect_shell()