Skip to content

Commit 32de53b

Browse files
authored
Handle client 8 pending kernels (#1014)
1 parent ece308b commit 32de53b

File tree

4 files changed

+18
-4
lines changed

4 files changed

+18
-4
lines changed

jupyter_server/services/kernels/handlers.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,8 +397,11 @@ async def pre_get(self):
397397
kernel = self.kernel_manager.get_kernel(self.kernel_id)
398398

399399
if hasattr(kernel, "ready"):
400+
ready = kernel.ready
401+
if not isinstance(ready, asyncio.Future):
402+
ready = asyncio.wrap_future(ready)
400403
try:
401-
await kernel.ready
404+
await ready
402405
except Exception as e:
403406
kernel.execution_state = "dead"
404407
kernel.reason = str(e)

jupyter_server/services/kernels/kernelmanager.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,11 @@ async def start_kernel(self, kernel_id=None, path=None, **kwargs):
246246
async def _finish_kernel_start(self, kernel_id):
247247
km = self.get_kernel(kernel_id)
248248
if hasattr(km, "ready"):
249+
ready = km.ready
250+
if not isinstance(ready, asyncio.Future):
251+
ready = asyncio.wrap_future(ready)
249252
try:
250-
await km.ready
253+
await ready
251254
except Exception:
252255
self.log.exception("Error waiting for kernel manager ready")
253256
return

tests/services/kernels/test_api.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import asyncio
12
import json
23
import os
34
import time
@@ -22,7 +23,10 @@ async def _(kernel_id):
2223
if getattr(km, "use_pending_kernels", False):
2324
kernel = km.get_kernel(kernel_id)
2425
if getattr(kernel, "ready", None):
25-
await kernel.ready
26+
ready = kernel.ready
27+
if not isinstance(ready, asyncio.Future):
28+
ready = asyncio.wrap_future(ready)
29+
await ready
2630

2731
return _
2832

tests/services/sessions/test_api.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import asyncio
12
import json
23
import os
34
import shutil
@@ -163,7 +164,10 @@ async def _(session_id):
163164
kernel_id = session["kernel"]["id"]
164165
kernel = mkm.get_kernel(kernel_id)
165166
if getattr(kernel, "ready", None):
166-
await kernel.ready
167+
ready = kernel.ready
168+
if not isinstance(ready, asyncio.Future):
169+
ready = asyncio.wrap_future(ready)
170+
await ready
167171

168172
return _
169173

0 commit comments

Comments
 (0)