Skip to content

Commit

Permalink
wip use pending kernels
Browse files Browse the repository at this point in the history
  • Loading branch information
Steven Silvester committed Oct 19, 2021
1 parent 1a6a481 commit 1136d42
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
9 changes: 8 additions & 1 deletion jupyter_server/services/kernels/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import json
import logging
from textwrap import dedent
from traceback import format_tb
import traceback

from ipython_genutils.py3compat import cast_unicode
from jupyter_client import protocol_version as client_protocol_version
Expand Down Expand Up @@ -79,7 +81,10 @@ async def post(self, kernel_id, action):
try:
await km.restart_kernel(kernel_id)
except Exception as e:
self.log.error("Exception restarting kernel", exc_info=True)
message = "Exception restarting kernel"
self.log.error(message, exc_info=True)
traceback = format_tb(e.__traceback__)
self.write(json.dumps(dict(message=message, traceback=traceback)))
self.set_status(500)
else:
model = await ensure_async(km.kernel_model(kernel_id))
Expand Down Expand Up @@ -326,6 +331,7 @@ async def pre_get(self):
# We don't want to wait forever, because browsers don't take it well when
# servers never respond to websocket connection requests.
kernel = self.kernel_manager.get_kernel(self.kernel_id)
await kernel.ready
self.session.key = kernel.session.key
future = self.request_kernel_info()

Expand Down Expand Up @@ -446,6 +452,7 @@ def on_message(self, msg):
def _on_zmq_reply(self, stream, msg_list):
idents, fed_msg_list = self.session.feed_identities(msg_list)
msg = self.session.deserialize(fed_msg_list)

parent = msg["parent_header"]

def write_stderr(error_message):
Expand Down
10 changes: 9 additions & 1 deletion jupyter_server/services/kernels/kernelmanager.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"""
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.
import asyncio
import os
from collections import defaultdict
from datetime import datetime
Expand Down Expand Up @@ -51,6 +52,8 @@ def _default_kernel_manager_class(self):

kernel_argv = List(Unicode())

use_pending_kernels = True

root_dir = Unicode(config=True)

_kernel_connections = Dict()
Expand Down Expand Up @@ -209,7 +212,7 @@ async def start_kernel(self, kernel_id=None, path=None, **kwargs):
kwargs["kernel_id"] = kernel_id
kernel_id = await ensure_async(self.pinned_superclass.start_kernel(self, **kwargs))
self._kernel_connections[kernel_id] = 0
self._kernel_ports[kernel_id] = self._kernels[kernel_id].ports
task = asyncio.create_task(self._get_ports(kernel_id))
self.start_watching_activity(kernel_id)
self.log.info("Kernel started: %s" % kernel_id)
self.log.debug("Kernel args: %r" % kwargs)
Expand All @@ -233,6 +236,11 @@ async def start_kernel(self, kernel_id=None, path=None, **kwargs):

return kernel_id

async def _get_ports(self, kernel_id):
km = self.get_kernel(kernel_id)
await km.ready
self._kernel_ports[kernel_id] = km.ports

def ports_changed(self, kernel_id):
"""Used by ZMQChannelsHandler to determine how to coordinate nudge and replays.
Expand Down

0 comments on commit 1136d42

Please sign in to comment.