manager.py
63 lines
| 2.1 KiB
| text/x-python
|
PythonLexer
MinRK
|
r10285 | """A kernel manager with a tornado IOLoop""" | ||
Brian Granger
|
r10282 | |||
#----------------------------------------------------------------------------- | ||||
# Copyright (C) 2013 The IPython Development Team | ||||
# | ||||
# Distributed under the terms of the BSD License. The full license is in | ||||
# the file COPYING, distributed as part of this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
from __future__ import absolute_import | ||||
import zmq | ||||
from zmq.eventloop import ioloop | ||||
MinRK
|
r10295 | from zmq.eventloop.zmqstream import ZMQStream | ||
Brian Granger
|
r10282 | |||
from IPython.utils.traitlets import ( | ||||
Instance | ||||
) | ||||
MinRK
|
r10285 | from IPython.kernel.manager import KernelManager | ||
MinRK
|
r10284 | from .restarter import IOLoopKernelRestarter | ||
Brian Granger
|
r10282 | |||
#----------------------------------------------------------------------------- | ||||
# Code | ||||
#----------------------------------------------------------------------------- | ||||
MinRK
|
r10295 | |||
def as_zmqstream(f): | ||||
def wrapped(self, *args, **kwargs): | ||||
socket = f(self, *args, **kwargs) | ||||
return ZMQStream(socket, self.loop) | ||||
return wrapped | ||||
MinRK
|
r10285 | class IOLoopKernelManager(KernelManager): | ||
Brian Granger
|
r10282 | |||
loop = Instance('zmq.eventloop.ioloop.IOLoop', allow_none=False) | ||||
def _loop_default(self): | ||||
return ioloop.IOLoop.instance() | ||||
MinRK
|
r10284 | _restarter = Instance('IPython.kernel.ioloop.IOLoopKernelRestarter') | ||
Brian Granger
|
r10282 | |||
def start_restarter(self): | ||||
if self.autorestart and self.has_kernel: | ||||
if self._restarter is None: | ||||
self._restarter = IOLoopKernelRestarter( | ||||
kernel_manager=self, loop=self.loop, | ||||
config=self.config, log=self.log | ||||
) | ||||
self._restarter.start() | ||||
def stop_restarter(self): | ||||
if self.autorestart: | ||||
if self._restarter is not None: | ||||
self._restarter.stop() | ||||
MinRK
|
r10295 | |||
connect_shell = as_zmqstream(KernelManager.connect_shell) | ||||
connect_iopub = as_zmqstream(KernelManager.connect_iopub) | ||||
connect_stdin = as_zmqstream(KernelManager.connect_stdin) | ||||
connect_hb = as_zmqstream(KernelManager.connect_hb) | ||||