##// END OF EJS Templates
more profile awareness from config.manager to IPython subclass...
more profile awareness from config.manager to IPython subclass also enables specifying profile by name, instead of full path.

File last commit:

r19453:3cc62d01
r20867:432981e3
Show More
client.py
38 lines | 1.2 KiB | text/x-python | PythonLexer
"""Implements a fully blocking kernel client.
Useful for test suites and blocking terminal interfaces.
"""
# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
try:
from queue import Empty # Python 3
except ImportError:
from Queue import Empty # Python 2
from IPython.utils.traitlets import Type
from IPython.kernel.channels import HBChannel
from IPython.kernel.client import KernelClient
from .channels import ZMQSocketChannel
class BlockingKernelClient(KernelClient):
def wait_for_ready(self):
# Wait for kernel info reply on shell channel
while True:
msg = self.shell_channel.get_msg(block=True)
if msg['msg_type'] == 'kernel_info_reply':
self._handle_kernel_info_reply(msg)
break
# Flush IOPub channel
while True:
try:
msg = self.iopub_channel.get_msg(block=True, timeout=0.2)
except Empty:
break
# The classes to use for the various channels
shell_channel_class = Type(ZMQSocketChannel)
iopub_channel_class = Type(ZMQSocketChannel)
stdin_channel_class = Type(ZMQSocketChannel)
hb_channel_class = Type(HBChannel)