A Jupyter Server Session Manager that rehydrates and synchronizes Jupyter sessions (e.g. notebook-kernel connections).
Project description
Jupyter Server Synchronizer
A Jupyter Server Session Manager that rehydrates and persists kernels and sessions beyond the lifetime of a server.
This is particularly useful for Jupyter Servers running remote kernels and contents.
Basic usage
Install and enable the extension:
pip install jupyter_server_synchronizer
jupyter server extension enable jupyter_server_synchronizer
When you start a Jupyter Server, it synchronize all managers before the Web application is started.
jupyter server --ServerApp.session_manager_class=jupyter_server_synchronizer.SynchronizerSessionManager
To synchronize periodically, enable the auto-synchronizing feature using the autosync
config option. For example,
jupyter server --ServerApp.session_manager_class=jupyter_server_synchronizer.SynchronizerSessionManager --SynchronizerSessionManager.autosync=True
Otherwise, you can trigger the synchronization making a POST
request to the /api/sync
endpoint.
Example
Below is a example of running the synchronizer with Jupyter Server talking to a Jupyter Kernel Gateway as its "remote" kernel service provider.
First, start the Kernel Gateway. You'll need to enable the list_kernels
method. In the example, we are assuming the Kernel Gateway is not multi-tenant; i.e. there is a single KG for a single Jupyter Server. We'll set the port to 9999
to free up 8888
for our Jupyter Server.
jupyter kernelgateway \
--port 9999 \
--JupyterWebsocketPersonality.list_kernels=True
Second, start the Jupyter Server and point it at the Kernel Gateway. Note that we set a database_filepath
trait in both the SessionManager
and SynchronizerExtension
(these paths don't need to be the same). The Synchronize relies on saving/storing of information about Jupyter kernels and sessions in a persistent database. This information is necessary to rehydrate and synchronize.
We'll enable the "autosync" feature to periodically synchronize the server.
jupyter lab \
--gateway-url=http://127.0.0.1:9999 \
--ServerApp.session_manager_class=jupyter_server_synchronizer.SynchronizerSessionManager
--SynchronizerSessionManager.database_filepath=jupyter-database.db \
--SynchronizerSessionManager.autosync=True \
--SynchronizerSessionManager.log_level=DEBUG
Now, let's kill that server:
kill -9 $(echo $(pgrep -lf jupyter-lab) | awk '{print $1;}')
And restart it to see if the kernels rehydrate and begin synchronizing again.
jupyter lab \
--gateway-url=http://127.0.0.1:9999 \
--ServerApp.session_manager_class=jupyter_server_synchronizer.SynchronizerSessionManager
--SessionManager.database_filepath=jupyter-database.db \
--SynchronizerSessionManager.autosync=True \
--SynchronizerSessionManager.log_level=DEBUG
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for jupyter_server_synchronizer-0.0.6.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65f5bef12559f70656fbf35d39ddae1f721a6a75a3f83c3c2924bf92b7099bfc |
|
MD5 | 640d9f4e6edf9828ca2be8ed7ffdfe24 |
|
BLAKE2b-256 | 101ce382df504cb1c058cedb7e9f81b7475d733047d73f958b1d8490c1a986a7 |
Hashes for jupyter_server_synchronizer-0.0.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8ef4f14dc3e1e7377ae25dec6120d70f10bd96fe53884c97bdcbb88e00cc4f7 |
|
MD5 | 3b019962c38d5a310196229e2357c25f |
|
BLAKE2b-256 | 8d168127d72879e4b69da4a8c00cc9130802a5b9ed7fceb425d7e2ba953c1933 |