Close new event loops in just_run helper #159
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I was getting some
__del__
errors from a test suite of a project using nbclient:Error traceback
I believe this comes from event loops being created to run nbclient async code, and then never cleaned up. #58 might also be related, but I'm not sure of that.
For Python 3.7 and above, it's easy to use
asyncio.run()
, which deals with creating an event loop and closing it again. For Python 3.6, I've added a try/finally to close the event loop after it finishes.In theory there's a slight downside that we have to create a new event loop for each synchronous call. However, I think the typical use case (at least, my use case ;-) ) is to make a single
execute()
call to execute an entire notebook, in which case the overhead of creating and tearing down the event loop is probably negligible.