Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cleanup executor resources after execution #969

Merged
merged 1 commit into from Sep 17, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 8 additions & 0 deletions voila/handler.py
Expand Up @@ -200,6 +200,8 @@ async def _jinja_notebook_execute(self, nb, kernel_id):
# see the updated variable (it seems to be local to our block)
nb.cells = result.cells

await self._cleanup_resources()

async def _jinja_cell_generator(self, nb, kernel_id):
"""Generator that will execute a single notebook cell at a time"""
nb, resources = ClearOutputPreprocessor().preprocess(nb, {'metadata': {'path': self.cwd}})
Expand Down Expand Up @@ -250,6 +252,12 @@ async def _jinja_cell_generator(self, nb, kernel_id):
finally:
yield output_cell

await self._cleanup_resources()

async def _cleanup_resources(self):
await ensure_async(self.executor.km.cleanup_resources())
await ensure_async(self.executor.kc.stop_channels())

async def load_notebook(self, path):
model = await ensure_async(self.contents_manager.get(path=path))
if 'content' not in model:
Expand Down