ipython / ipykernel

IPython Kernel for Jupyter
https://ipykernel.readthedocs.io/en/stable/
BSD 3-Clause "New" or "Revised" License
633 stars 362 forks source link

close_loop coroutine instantiated but never awaited in (old?) asyncio loop integration #1260

Open johnfb opened 1 month ago

johnfb commented 1 month ago

I was trawling through the source code and I spotted what looks to me like a possible bug here: https://github.com/ipython/ipykernel/blob/d4a8703593cbe5d82bc955d68543dc623f5b4510/ipykernel/eventloops.py#L455

This instantiates a coroutine that never gets awaited. Calling an async def function just returns a coroutine object and does not start evaluating the function until the coroutine is started.

Additional poking around makes it look like asyncio loop integration here is actually semi-dead code from an era when the tornado event loop and asynio event loop where not the same event loop (tornado < 5?). Seems like this should be cleaned up, as my read is this old asyncio loop integration is not being maintained. Maybe a deprecation warning should be displayed if anyone tries to use %gui asyncio or something?

ianthomas23 commented 1 month ago

@johnfb Thanks for the report. Quite a lot of the event loop code hasn't been updated to correctly use anyio, e.g. #1235. This will need to be done before the 7.0 release.