Skip to content

Commit 638ee81

Browse files
kevin-batestoonijn
authored andcommitted
Update all coroutine/yield methods to async/await, share another method
1 parent 8da3a6f commit 638ee81

File tree

1 file changed

+15
-25
lines changed

1 file changed

+15
-25
lines changed

notebook/services/kernels/kernelmanager.py

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,11 @@ def __init__(self, **kwargs):
139139
self.kernel_culler = KernelCuller(parent=self)
140140
self.activity_monitor = ActivityMonitor(parent=self)
141141

142+
def _handle_kernel_died(self, kernel_id):
143+
"""notice that a kernel died"""
144+
self.log.warning("Kernel %s died, removing from map.", kernel_id)
145+
self.remove_kernel(kernel_id)
146+
142147
def kernel_model(self, kernel_id):
143148
"""Return a JSON-safe dict representing a kernel
144149
@@ -269,13 +274,7 @@ def __init__(self, **kwargs):
269274
# Methods for managing kernels and sessions
270275
# -------------------------------------------------------------------------
271276

272-
def _handle_kernel_died(self, kernel_id):
273-
"""notice that a kernel died"""
274-
self.log.warning("Kernel %s died, removing from map.", kernel_id)
275-
self.remove_kernel(kernel_id)
276-
277-
@gen.coroutine
278-
def start_kernel(self, kernel_id=None, path=None, **kwargs):
277+
async def start_kernel(self, kernel_id=None, path=None, **kwargs):
279278
"""Start a kernel for a session and return its kernel_id.
280279
281280
Parameters
@@ -294,7 +293,7 @@ def start_kernel(self, kernel_id=None, path=None, **kwargs):
294293
if kernel_id is None:
295294
if path is not None:
296295
kwargs['cwd'] = self.cwd_for_path(path)
297-
kernel_id = yield maybe_future(
296+
kernel_id = await maybe_future(
298297
super(MappingKernelManager, self).start_kernel(**kwargs)
299298
)
300299
self._kernel_connections[kernel_id] = 0
@@ -317,8 +316,7 @@ def start_kernel(self, kernel_id=None, path=None, **kwargs):
317316
self._check_kernel_id(kernel_id)
318317
self.log.info("Using existing kernel: %s" % kernel_id)
319318

320-
# py2-compat
321-
raise gen.Return(kernel_id)
319+
return kernel_id
322320

323321
def shutdown_kernel(self, kernel_id, now=False):
324322
"""Shutdown a kernel by kernel_id"""
@@ -338,11 +336,10 @@ def shutdown_kernel(self, kernel_id, now=False):
338336

339337
return super(MappingKernelManager, self).shutdown_kernel(kernel_id, now=now)
340338

341-
@gen.coroutine
342-
def restart_kernel(self, kernel_id):
339+
async def restart_kernel(self, kernel_id):
343340
"""Restart a kernel by kernel_id"""
344341
self._check_kernel_id(kernel_id)
345-
yield maybe_future(super(MappingKernelManager, self).restart_kernel(kernel_id))
342+
await maybe_future(super(MappingKernelManager, self).restart_kernel(kernel_id))
346343
kernel = self.get_kernel(kernel_id)
347344
# return a Future that will resolve when the kernel has successfully restarted
348345
channel = kernel.connect_shell()
@@ -379,7 +376,7 @@ def on_restart_failed():
379376
loop = IOLoop.current()
380377
timeout = loop.add_timeout(loop.time() + self.kernel_info_timeout, on_timeout)
381378
# wait for restart to complete
382-
yield future
379+
await future
383380

384381

385382
class AsyncMappingKernelManager(MappingKernelManagerBase, AsyncMultiKernelManager):
@@ -396,11 +393,6 @@ def __init__(self, **kwargs):
396393
# Methods for managing kernels and sessions
397394
# -------------------------------------------------------------------------
398395

399-
def _handle_kernel_died(self, kernel_id):
400-
"""notice that a kernel died"""
401-
self.log.warning("Kernel %s died, removing from map.", kernel_id)
402-
self.remove_kernel(kernel_id)
403-
404396
async def start_kernel(self, kernel_id=None, path=None, **kwargs):
405397
"""Start a kernel for a session and return its kernel_id.
406398
@@ -695,16 +687,14 @@ def _log_info(self):
695687
log_msg.append(".")
696688
self.log.info(''.join(log_msg))
697689

698-
@gen.coroutine
699-
def cull_kernels(self):
690+
async def cull_kernels(self):
700691
self.log.debug("Polling every %s seconds for kernels %s > %s seconds...",
701692
self.parent.cull_interval, self.cull_state, self.parent.cull_idle_timeout)
702693
# Get a separate list of kernels to avoid conflicting updates while iterating
703694
for kernel_id in self.parent.list_kernel_ids():
704-
yield self.parent.cull_kernel_if_idle(kernel_id)
695+
await self.parent.cull_kernel_if_idle(kernel_id)
705696

706-
@gen.coroutine
707-
def cull_kernel_if_idle(self, kernel_id):
697+
async def cull_kernel_if_idle(self, kernel_id):
708698

709699
# Get the kernel model and use that to determine cullability...
710700
try:
@@ -729,7 +719,7 @@ def cull_kernel_if_idle(self, kernel_id):
729719
self.log.warning(
730720
"Culling '%s' kernel '%s' (%s) with %d connections due to %s seconds of inactivity.",
731721
model['execution_state'], model['name'], kernel_id, connections, idle_duration)
732-
yield maybe_future(self.parent.shutdown_kernel(kernel_id))
722+
await maybe_future(self.parent.shutdown_kernel(kernel_id))
733723
except KeyError:
734724
pass # KeyErrors are somewhat expected since the kernel can be shutdown as the culling check is made.
735725
except Exception as e: # other errors are not as expected, so we'll make some noise, but continue.

0 commit comments

Comments
 (0)