From 32de53beae1e9396dd3111b17222ec802b122f0b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 11 Oct 2022 06:06:42 -0500 Subject: [PATCH] Handle client 8 pending kernels (#1014) --- jupyter_server/services/kernels/handlers.py | 5 ++++- jupyter_server/services/kernels/kernelmanager.py | 5 ++++- tests/services/kernels/test_api.py | 6 +++++- tests/services/sessions/test_api.py | 6 +++++- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/jupyter_server/services/kernels/handlers.py b/jupyter_server/services/kernels/handlers.py index 91ce03826..d932dfbc6 100644 --- a/jupyter_server/services/kernels/handlers.py +++ b/jupyter_server/services/kernels/handlers.py @@ -397,8 +397,11 @@ async def pre_get(self): kernel = self.kernel_manager.get_kernel(self.kernel_id) if hasattr(kernel, "ready"): + ready = kernel.ready + if not isinstance(ready, asyncio.Future): + ready = asyncio.wrap_future(ready) try: - await kernel.ready + await ready except Exception as e: kernel.execution_state = "dead" kernel.reason = str(e) diff --git a/jupyter_server/services/kernels/kernelmanager.py b/jupyter_server/services/kernels/kernelmanager.py index 3e8c71b84..6cf9dfc4c 100644 --- a/jupyter_server/services/kernels/kernelmanager.py +++ b/jupyter_server/services/kernels/kernelmanager.py @@ -246,8 +246,11 @@ async def start_kernel(self, kernel_id=None, path=None, **kwargs): async def _finish_kernel_start(self, kernel_id): km = self.get_kernel(kernel_id) if hasattr(km, "ready"): + ready = km.ready + if not isinstance(ready, asyncio.Future): + ready = asyncio.wrap_future(ready) try: - await km.ready + await ready except Exception: self.log.exception("Error waiting for kernel manager ready") return diff --git a/tests/services/kernels/test_api.py b/tests/services/kernels/test_api.py index 8e70ba5f4..2805d6315 100644 --- a/tests/services/kernels/test_api.py +++ b/tests/services/kernels/test_api.py @@ -1,3 +1,4 @@ +import asyncio import json import os import time @@ -22,7 +23,10 @@ async def _(kernel_id): if getattr(km, "use_pending_kernels", False): kernel = km.get_kernel(kernel_id) if getattr(kernel, "ready", None): - await kernel.ready + ready = kernel.ready + if not isinstance(ready, asyncio.Future): + ready = asyncio.wrap_future(ready) + await ready return _ diff --git a/tests/services/sessions/test_api.py b/tests/services/sessions/test_api.py index 1bd4f58df..eb2a52efc 100644 --- a/tests/services/sessions/test_api.py +++ b/tests/services/sessions/test_api.py @@ -1,3 +1,4 @@ +import asyncio import json import os import shutil @@ -163,7 +164,10 @@ async def _(session_id): kernel_id = session["kernel"]["id"] kernel = mkm.get_kernel(kernel_id) if getattr(kernel, "ready", None): - await kernel.ready + ready = kernel.ready + if not isinstance(ready, asyncio.Future): + ready = asyncio.wrap_future(ready) + await ready return _