Description
Hello,
as follow-up on jupyter/notebook#3397 (comment), here a minimal example that I expect to finish successfully when sent to the kernel by jupyter:
import asyncio
print(asyncio.get_event_loop().run_until_complete(asyncio.sleep(0)))
It runs fine in latest IPython which doesn't use tornado under the hood.
However, notebook>=5.7.9
requires tornado>=5
and so when ipykernel executes loop = tornado.ioloop.IOLoop.current()
, an asyncio event loop will be created and run_forever
by ipykernel.
This consequently leaves the user without options (left aside nest-asyncio
which works for most cases), as there is a running asyncio loop on startup.
If IPython can run this simple snippet, shouldn't jupyter be able to do the same? Currently, any package that does a plain loop setup and teardown will crash in jupyter envs that have tornado>=5
.