diff --git a/ipykernel/inprocess/client.py b/ipykernel/inprocess/client.py index bff31cf9f..e6b3b358a 100644 --- a/ipykernel/inprocess/client.py +++ b/ipykernel/inprocess/client.py @@ -171,7 +171,10 @@ def _dispatch_to_kernel(self, msg): raise RuntimeError('Cannot send request. No kernel exists.') stream = kernel.shell_stream - kernel.dispatch_shell(msg) + self.session.send(stream, msg) + msg_parts = stream.recv_multipart() + kernel.dispatch_shell(msg_parts) + idents, reply_msg = self.session.recv(stream, copy=False) self.shell_channel.call_handlers_later(reply_msg) diff --git a/ipykernel/ipkernel.py b/ipykernel/ipkernel.py index 2c8493e20..8a6e7c6b6 100644 --- a/ipykernel/ipkernel.py +++ b/ipykernel/ipkernel.py @@ -556,7 +556,7 @@ def do_clear(self): self.shell.reset(False) return dict(status='ok') - def should_dispatch_immediately(self, msg, *args): + def should_dispatch_immediately(self, msg): try: msg_type = msg['header']['msg_type'] if msg_type in self.comm_msg_types: diff --git a/ipykernel/kernelbase.py b/ipykernel/kernelbase.py index 9c261855d..73f7ae23d 100644 --- a/ipykernel/kernelbase.py +++ b/ipykernel/kernelbase.py @@ -399,9 +399,7 @@ def dispatch_queue(self): def _message_counter_default(self): return itertools.count() - def should_dispatch_immediately( - self, msg, idents, dispatch - ): + def should_dispatch_immediately(self, msg): """ This provides a hook for dispatching incoming messages from the frontend immediately, and out of order. @@ -423,9 +421,7 @@ def schedule_dispatch(self, msg, dispatch): new_args = (msg, idents) - if self.should_dispatch_immediately( - msg, idents, dispatch - ): + if self.should_dispatch_immediately(msg): return self.io_loop.add_callback(dispatch, *new_args) idx = next(self._message_counter)