Skip to content

Commit bcfba5d

Browse files
committed
moved kernel pre-init to lifespan
1 parent cd0e3ef commit bcfba5d

File tree

3 files changed

+15
-36
lines changed

3 files changed

+15
-36
lines changed

template/server/main.py

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -34,31 +34,22 @@ async def lifespan(app: FastAPI):
3434
global client
3535
client = httpx.AsyncClient()
3636

37-
with open("/root/.jupyter/kernel_id") as file:
38-
default_context_id = file.read().strip()
39-
40-
default_ws = ContextWebSocket(
41-
default_context_id,
42-
str(uuid.uuid4()),
43-
"python",
44-
"/home/user",
45-
)
46-
default_websockets["python"] = default_context_id
47-
websockets["default"] = default_ws
48-
websockets[default_context_id] = default_ws
49-
50-
logger.info("Connecting to default runtime")
51-
await default_ws.connect()
52-
53-
websockets["default"] = default_ws
37+
try:
38+
default_context = await create_context(client, websockets, "python", "/home/user")
39+
default_websockets["python"] = default_context.id
40+
websockets["default"] = websockets[default_context.id]
5441

55-
logger.info("Connected to default runtime")
56-
yield
42+
logger.info("Connected to default runtime")
43+
yield
5744

58-
for ws in websockets.values():
59-
await ws.close()
45+
# Will cleanup after application shuts down
46+
for ws in websockets.values():
47+
await ws.close()
6048

61-
await client.aclose()
49+
await client.aclose()
50+
except Exception as e:
51+
logger.error(f"Failed to initialize default context: {e}")
52+
raise
6253

6354

6455
app = FastAPI(lifespan=lifespan)

template/server/messaging.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,15 +327,15 @@ async def _process_message(self, data: dict):
327327

328328
elif data["msg_type"] == "stream":
329329
if data["content"]["name"] == "stdout":
330-
logger.debug(f"Execution {parent_msg_ig} received stdout")
330+
logger.debug(f"Execution {parent_msg_ig} received stdout: {data['content']['text']}")
331331
await queue.put(
332332
Stdout(
333333
text=data["content"]["text"], timestamp=data["header"]["date"]
334334
)
335335
)
336336

337337
elif data["content"]["name"] == "stderr":
338-
logger.debug(f"Execution {parent_msg_ig} received stderr")
338+
logger.debug(f"Execution {parent_msg_ig} received stderr: {data['content']['text']}")
339339
await queue.put(
340340
Stderr(
341341
text=data["content"]["text"], timestamp=data["header"]["date"]

template/start-up.sh

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,6 @@ function start_jupyter_server() {
1313
response=$(curl -s -o /dev/null -w "%{http_code}" "http://localhost:8888/api/status")
1414
done
1515

16-
response=$(curl -s -X POST "localhost:8888/api/sessions" -H "Content-Type: application/json" -d '{"path": "/home/user", "kernel": {"name": "python3"}, "type": "notebook", "name": "default"}')
17-
status=$(echo "${response}" | jq -r '.kernel.execution_state')
18-
if [[ ${status} != "starting" ]]; then
19-
echo "Error creating kernel: ${response} ${status}"
20-
exit 1
21-
fi
22-
23-
sudo mkdir -p /root/.jupyter
24-
kernel_id=$(echo "${response}" | jq -r '.kernel.id')
25-
sudo echo "${kernel_id}" | sudo tee /root/.jupyter/kernel_id >/dev/null
26-
sudo echo "${response}" | sudo tee /root/.jupyter/.session_info >/dev/null
27-
2816
cd /root/.server/
2917
/root/.server/.venv/bin/uvicorn main:app --host 0.0.0.0 --port 49999 --workers 1 --no-access-log --no-use-colors --timeout-keep-alive 640
3018
}

0 commit comments

Comments
 (0)