diff --git a/jupyter_client/manager.py b/jupyter_client/manager.py index bf94ad002..bebef885b 100644 --- a/jupyter_client/manager.py +++ b/jupyter_client/manager.py @@ -13,7 +13,7 @@ import time import zmq - +from tornado import gen from ipython_genutils.importstring import import_item from .localinterfaces import is_local_ip, local_ips from traitlets import ( @@ -205,6 +205,7 @@ def _close_control_socket(self): self._control_socket.close() self._control_socket = None + @gen.coroutine def start_kernel(self, **kw): """Starts a kernel on this host in a separate process. @@ -246,8 +247,7 @@ def start_kernel(self, **kw): # launch the kernel subprocess self.log.debug("Starting kernel: %s", kernel_cmd) - self.kernel = self._launch_kernel(kernel_cmd, env=env, - **kw) + self.kernel = yield gen.maybe_future(self._launch_kernel(kernel_cmd, env=env, **kw)) self.start_restarter() self._connect_control_socket() diff --git a/jupyter_client/multikernelmanager.py b/jupyter_client/multikernelmanager.py index c2b61bde0..b3c0b9a02 100644 --- a/jupyter_client/multikernelmanager.py +++ b/jupyter_client/multikernelmanager.py @@ -7,9 +7,9 @@ import os import uuid - import zmq +from tornado import gen from traitlets.config.configurable import LoggingConfigurable from ipython_genutils.importstring import import_item from traitlets import ( @@ -82,6 +82,7 @@ def __len__(self): def __contains__(self, kernel_id): return kernel_id in self._kernels + @gen.coroutine def start_kernel(self, kernel_name=None, **kwargs): """Start a new kernel. @@ -107,9 +108,9 @@ def start_kernel(self, kernel_name=None, **kwargs): parent=self, log=self.log, kernel_name=kernel_name, **constructor_kwargs ) - km.start_kernel(**kwargs) + yield gen.maybe_future(km.start_kernel(**kwargs)) self._kernels[kernel_id] = km - return kernel_id + raise gen.Return(kernel_id) @kernel_method def shutdown_kernel(self, kernel_id, now=False, restart=False):