diff --git a/optional-skills/data-science/jupyter-notebook/SKILL.md b/optional-skills/data-science/jupyter-notebook/SKILL.md index 91ae015f5f4f..17d10c1232b3 100644 --- a/optional-skills/data-science/jupyter-notebook/SKILL.md +++ b/optional-skills/data-science/jupyter-notebook/SKILL.md @@ -160,6 +160,17 @@ uv run "$SCRIPT" restart-run-all --path --save-outputs --compac 8. **Occasional websocket timeouts** — some operations may timeout on first try, especially after a kernel restart. Retry once before escalating. +9. **If websocket consistently times out on this host**, force zmq transport: + `uv run "$SCRIPT" execute --transport zmq ...`. Symptom: every execute returns + "Websocket execution may already have reached the kernel, so auto fallback was + skipped". The kernel actually ran fine (REST shows execution_state=idle and + execution_count increments) — only the websocket reply channel is broken. + zmq transport uses jupyter_client directly and sidesteps the issue. + +10. **When starting a fresh server for REST-only use**, add + `--ServerApp.disable_check_xsrf=True` — otherwise POST /api/sessions returns + `"'_xsrf' argument missing from POST"` and kernel session creation fails. + ## Timeout Defaults The script has a 30-second default timeout per execution. For long-running