I want to mimic the functionality of a notebook server, and instead coordinate the creation/management of different IPython/Jupyter kernels from a central body of logic (i.e
A KernelManager deals with starting and stopping a single kernel, and there's a MultiKernelManager to co-ordinate more than one.
Then you can use the .client()
method to get a KernelClient instance which handles communications with a kernel:
For details of how you communicate with a kernel, see the message spec docs. Some of this is abstracted away by KernelClient, but you'll probably need to know some of it.