diff --git a/ipykernel/control.py b/ipykernel/control.py index bb5f7b5f9..ee475188d 100644 --- a/ipykernel/control.py +++ b/ipykernel/control.py @@ -1,24 +1,17 @@ from threading import Thread -import zmq - -if zmq.pyzmq_version_info() >= (17, 0): - from tornado.ioloop import IOLoop -else: - # deprecated since pyzmq 17 - from zmq.eventloop.ioloop import IOLoop +from tornado.platform.asyncio import AsyncIOLoop class ControlThread(Thread): def __init__(self, **kwargs): Thread.__init__(self, name="Control", **kwargs) - self.io_loop = IOLoop(make_current=False) + self.io_loop = AsyncIOLoop(make_current=False) self.pydev_do_not_trace = True self.is_pydev_daemon_thread = True def run(self): self.name = "Control" - self.io_loop.make_current() try: self.io_loop.start() finally: diff --git a/ipykernel/iostream.py b/ipykernel/iostream.py index 419d092c3..43644c224 100644 --- a/ipykernel/iostream.py +++ b/ipykernel/iostream.py @@ -17,14 +17,11 @@ from weakref import WeakSet import zmq - -if zmq.pyzmq_version_info() >= (17, 0): - from tornado.ioloop import IOLoop -else: - # deprecated since pyzmq 17 - from zmq.eventloop.ioloop import IOLoop - from jupyter_client.session import extract_header + +# AsyncIOLoop always creates a new asyncio event loop, +# rather than the default AsyncIOMainLoop +from tornado.platform.asyncio import AsyncIOLoop from zmq.eventloop.zmqstream import ZMQStream # ----------------------------------------------------------------------------- @@ -63,7 +60,7 @@ def __init__(self, socket, pipe=False): self.background_socket = BackgroundSocket(self) self._master_pid = os.getpid() self._pipe_flag = pipe - self.io_loop = IOLoop(make_current=False) + self.io_loop = AsyncIOLoop(make_current=False) if pipe: self._setup_pipe_in() self._local = threading.local() @@ -78,7 +75,6 @@ def __init__(self, socket, pipe=False): def _thread_main(self): """The inner loop that's actually run in a thread""" - self.io_loop.make_current() self.io_loop.start() self.io_loop.close(all_fds=True)