ipython profile create my_kernel --ipython-dir="./ipython_dir"ipython kernel -f="./confs/c1.json" --matplotlib --ipython-dir="./ipython_dir" --profile="my_kernel"
This gives me file c1.json
{
"shell_port": 33135,
"iopub_port": 45121,
"stdin_port": 33991,
"control_port": 37215,
"hb_port": 60399,
"ip": "127.0.0.1",
"key": "4ec201d6-fa1cefbd31693c09aa044b2a",
"transport": "tcp",
"signature_scheme": "hmac-sha256",
"kernel_name": ""
}
Here is the requirements:
ipython==8.22.2
jupyter_client==8.6.1
So the questions are
- What's the most convenient way to communicate with an IPython kernel externally (say client.py file)? I'm currently using the
jupyter_clientlibrary to communicate.
import json
from jupyter_client.asynchronous.client import AsyncKernelClient
from jupyter_client.client import KernelClient
json_file = open("confs/c1.json", "r")
data = json.load(json_file)
shell_port = data["shell_port"]
iopub_port = data["iopub_port"]
stdin_port = data["stdin_port"]
control_port = data["control_port"]
hb_port = data["hb_port"]
kc = KernelClient(
ip="127.0.0.1",
transport="tcp",
shell_port=shell_port,
iopub_port=iopub_port,
stdin_port=stdin_port,
control_port=control_port,
hb_port=hb_port
)
code = """import os
current_dir = os.getcwd()
print("Current working directory:", current_dir)"""
msg_id = kc.execute(code)
I need to establish an asynchronous communication channel with the IPython kernel to enable real-time output streaming. I believe
from jupyter_client.asynchronous.client import AsyncKernelClientis a suitable option. Can you provide a code snippet demonstrating this approach?Last one - How to dockerize the ipython kernel for each user and make in a connection until user kill kernel or timeout. (I want to use django channel)
frontend <--> Ajax <--> django channel <--> jupyter-client <--> dockerized ipython kernel