Skip to content

Commit 4fe3430

Browse files
committed
Nudge kernel with kernel info requests until IOPub responds
1 parent 4342e49 commit 4fe3430

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

notebook/services/kernels/handlers.py

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -144,24 +144,26 @@ def finish():
144144
shell_channel.stop_on_recv()
145145

146146
def on_shell_reply(msg):
147-
self.log.debug("Nudge: shell info reply received: %s", self.kernel_id)
148147
if not info_future.done():
148+
self.log.debug("Nudge: shell info reply received: %s", self.kernel_id)
149+
shell_channel.stop_on_recv()
149150
self.log.debug("Nudge: resolving shell future")
150151
info_future.set_result(msg)
151-
if iopub_future.done():
152-
finish()
153-
self.log.debug("Setting results")
154-
future.set_result(info_future.result())
152+
if iopub_future.done():
153+
finish()
154+
self.log.debug("Nudge: resolving main future in shell handler")
155+
future.set_result(info_future.result())
155156

156157
def on_iopub(msg):
157-
self.log.debug("Nudge: First IOPub received: %s", self.kernel_id)
158158
if not iopub_future.done():
159+
self.log.debug("Nudge: first IOPub received: %s", self.kernel_id)
160+
iopub_channel.stop_on_recv()
159161
self.log.debug("Nudge: resolving iopub future")
160162
iopub_future.set_result(None)
161-
if info_future.done():
162-
finish()
163-
self.log.debug("Setting results")
164-
future.set_result(info_future.result())
163+
if info_future.done():
164+
finish()
165+
self.log.debug("Nudge: resolving main future in iopub handler")
166+
future.set_result(info_future.result())
165167

166168
def on_timeout():
167169
self.log.warning("Nudge: Timeout waiting for kernel_info_reply: %s", self.kernel_id)
@@ -346,8 +348,11 @@ def open(self, kernel_id):
346348
km.add_restart_callback(self.kernel_id, self.on_kernel_restarted)
347349
km.add_restart_callback(self.kernel_id, self.on_restart_failed, 'dead')
348350

349-
for channel, stream in self.channels.items():
350-
stream.on_recv_stream(self._on_zmq_reply)
351+
def subscribe(value):
352+
for channel, stream in self.channels.items():
353+
stream.on_recv_stream(self._on_zmq_reply)
354+
355+
connected.add_done_callback(subscribe)
351356

352357
return connected
353358

0 commit comments

Comments
 (0)