jupyter / jupyter_client

Jupyter protocol client APIs
https://jupyter-client.readthedocs.io
BSD 3-Clause "New" or "Revised" License
383 stars 283 forks source link

Add some nest_asyncio insurance #823

Closed vidartf closed 1 year ago

vidartf commented 2 years ago

Builds on #822 in order to help fix https://github.com/jupyterlab/jupyterlab/issues/11934.

Adds a decorator to classes that uses run_sync, so that it will attempt to patch in nest_asyncio before the methods gets called. This is done in the naive belief that the time of some of the __init__ calls are more likely to be closer to the init of the loop. It also only applies the patch if a sync class is actually instantiated, and has minimal overhead for async classes.

A rather blunt instrument, but also rather hard to solve generically without putting weird restrictions on consumers of jupyter-client. The other alternative is to have jupyter_server always import nest_asyncio and call the patch, even if run_sync is never called.

blink1073 commented 1 year ago

Closing in favor of removing nest-asyncio altogether in #835