Skip to content

Commit 6d41ead

Browse files
committed
Change logic of wait_for_ready to wait for the IOPub to be subscribed
1 parent 778fa85 commit 6d41ead

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

jupyter_client/asynchronous/client.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,14 +126,21 @@ async def wait_for_ready(self, timeout=None):
126126

127127
# Wait for kernel info reply on shell channel
128128
while True:
129+
self.kernel_info()
129130
try:
130131
msg = await self.shell_channel.get_msg(timeout=1)
131132
except Empty:
132133
pass
133134
else:
134135
if msg['msg_type'] == 'kernel_info_reply':
135-
self._handle_kernel_info_reply(msg)
136-
break
136+
# Checking that IOPub is connected. If it is not connected, start over.
137+
try:
138+
iopub_msg = await self.iopub_channel.get_msg(block=True, timeout=0.2)
139+
except Empty:
140+
pass
141+
else:
142+
self._handle_kernel_info_reply(msg)
143+
break
137144

138145
if not await self.is_alive():
139146
raise RuntimeError('Kernel died before replying to kernel_info')

jupyter_client/blocking/client.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,21 @@ def wait_for_ready(self, timeout=None):
9191

9292
# Wait for kernel info reply on shell channel
9393
while True:
94+
self.kernel_info()
9495
try:
9596
msg = self.shell_channel.get_msg(block=True, timeout=1)
9697
except Empty:
9798
pass
9899
else:
99100
if msg['msg_type'] == 'kernel_info_reply':
100-
self._handle_kernel_info_reply(msg)
101-
break
101+
# Checking that IOPub is connected. If it is not connected, start over.
102+
try:
103+
iopub_msg = self.iopub_channel.get_msg(timeout=0.2)
104+
except Empty:
105+
pass
106+
else:
107+
self._handle_kernel_info_reply(msg)
108+
break
102109

103110
if not self.is_alive():
104111
raise RuntimeError('Kernel died before replying to kernel_info')

jupyter_client/client.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,10 @@ def start_channels(self, shell=True, iopub=True, stdin=True, hb=True, control=Tr
102102
:meth:`start_kernel`. If the channels have been stopped and you
103103
call this, :class:`RuntimeError` will be raised.
104104
"""
105-
if shell:
106-
self.shell_channel.start()
107-
self.kernel_info()
108105
if iopub:
109106
self.iopub_channel.start()
107+
if shell:
108+
self.shell_channel.start()
110109
if stdin:
111110
self.stdin_channel.start()
112111
self.allow_stdin = True

0 commit comments

Comments
 (0)