Add jupyter server shutdown timeout setting (#15913)

* add jupyter server shutdown timeout setting

* no timeout if setting is 0

* set minimum value to 0
This commit is contained in:
Lucy Zhang
2021-06-25 18:16:32 -04:00
committed by GitHub
parent 7c6368b4b6
commit ff1a642157
4 changed files with 19 additions and 7 deletions

View File

@@ -43,6 +43,12 @@
"default": false,
"description": "%notebook.dontPromptPythonUpdate.description%"
},
"notebook.jupyterServerShutdownTimeout": {
"type": "number",
"default": 5,
"minimum": 0,
"description": "%notebook.jupyterServerShutdownTimeout.description%"
},
"notebook.overrideEditorTheming": {
"type": "boolean",
"default": true,

View File

@@ -5,6 +5,7 @@
"notebook.pythonPath.description": "Local path to python installation used by Notebooks.",
"notebook.useExistingPython.description": "Local path to a preexisting python installation used by Notebooks.",
"notebook.dontPromptPythonUpdate.description": "Do not show prompt to update Python.",
"notebook.jupyterServerShutdownTimeout.description": "The amount of time (in minutes) to wait before shutting down a server after all notebooks are closed. (Enter 0 to not shutdown)",
"notebook.overrideEditorTheming.description": "Override editor default settings in the Notebook editor. Settings include background color, current line color and border",
"notebook.maxTableRows.description": "Maximum number of rows returned per table in the Notebook editor",
"notebook.trustedBooks.description": "Notebooks contained in these books will automatically be trusted.",

View File

@@ -17,6 +17,7 @@ export const pythonVersion = '3.8.10';
export const pythonPathConfigKey = 'pythonPath';
export const existingPythonConfigKey = 'useExistingPython';
export const dontPromptPythonUpdate = 'dontPromptPythonUpdate';
export const jupyterServerShutdownTimeoutConfigKey = 'jupyterServerShutdownTimeout';
export const notebookConfigKey = 'notebook';
export const trustedBooksConfigKey = 'trustedBooks';
export const pinnedBooksConfigKey = 'pinnedNotebooks';

View File

@@ -64,13 +64,17 @@ export class JupyterNotebookProvider implements nb.NotebookProvider {
manager.sessionManager.shutdown(session.id);
}
if (sessionManager.listRunning().length === 0) {
const TenMinutesInMs = 10 * 60 * 1000;
setTimeout(() => {
if (sessionManager.listRunning().length === 0) {
this.managerTracker.delete(baseFolder);
manager.dispose();
}
}, TenMinutesInMs);
let notebookConfig: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration(constants.notebookConfigKey);
let timeoutInMinutes: number = notebookConfig.get(constants.jupyterServerShutdownTimeoutConfigKey);
if (timeoutInMinutes > 0) {
const timeoutInMs = timeoutInMinutes * 60 * 1000;
setTimeout(() => {
if (sessionManager.listRunning().length === 0) {
this.managerTracker.delete(baseFolder);
manager.dispose();
}
}, timeoutInMs);
}
}
}
}