bundles / jupyter_client latest /docs
Doc
Pending Kernels
docs/pending-kernels
Added in 7.1.0
In scenarios where an kernel takes a long time to start (e.g. kernels running remotely), it can be advantageous to immediately return the kernel's model and ID from key methods like .start_kernel() and .shutdown_kernel(). The kernel will continue its task without blocking other managerial actions.
This intermediate state is called a "pending kernel".
How they work
When .start_kernel() or .shutdown_kernel() is called, a Future is created under the KernelManager.ready property. This property can be awaited anytime to ensure that the kernel moves out of its pending state, e.g.:
# await a Kernel Manager's `.ready` property to # block further action until the kernel is out # of its pending state. await kernel_manager.ready
Once the kernel is finished pending, .ready.done() will be True and either 1) .ready.result() will return None or 2) .ready.exception() will return a raised exception
Using pending kernels
The most common way to interact with pending kernels is through the `` MultiKernelManager``—the object that manages a collection of kernels—by setting its use_pending_kernels trait to True. Pending kernels are "opt-in"; they are not used by default in the MultiKernelManager.
When use_pending_kernels is True, the following changes are made to the MultiKernelManager:
start_kernelandstop_kernelreturn immediately while running thepending task in a background thread.
The following methods raise a
RuntimeErrorif a kernel is pending:restart_kernelinterrupt_kernelshutdown_kernel
shutdown_allwill wait for all pending kernels to become ready beforeattempting to shut them down.