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.
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 innest_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 importnest_asyncio
and call the patch, even ifrun_sync
is never called.