You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

远程内核断开后如何让Jupyter Notebook持续运行并恢复输出结果

问题根因

你遇到的现象本质是Jupyter的前后端交互逻辑导致的:

  1. Jupyter内核的运行输出默认是实时通过websocket推送给当前连接的前端页面,默认不会持久化缓存,旧连接断开后新建立的前端会话默认无法拉取断开期间产生的输出
  2. 默认配置下websocket超时断开后,内核会暂停正在执行的代码任务,哪怕Jupyter进程本身还在tmux后台运行,也不会继续执行后续单元格
配置方案

1. 调整Jupyter服务端配置,从根源解决问题

如果是第一次生成配置文件,先在远程服务器执行:
jupyter notebook --generate-config
打开生成的配置文件(默认路径为~/.jupyter/jupyter_notebook_config.py),修改以下参数:

  • 关闭websocket心跳超时检测,避免连接断开后内核停止任务:
    c.NotebookApp.tornado_settings = {'websocket_ping_interval': None, 'websocket_ping_timeout': None}
  • 开启内核输出缓冲,新连接可自动拉取断开期间的历史输出:
    c.Kernel.buffer_ports = True
  • 缩短自动保存间隔,将运行输出定时写入ipynb文件,避免缓存丢失:
    c.FileContentsManager.autosave_interval = 30 (单位为秒,可根据需求调整)

2. 优化运行与连接方式,降低断开概率

  • 你当前使用tmux的方式是可行的,启动Jupyter后按Ctrl+B+D detach tmux会话即可,不要在ssh连接中直接关闭tmux窗口
  • 若需要更稳定的后台运行,可使用nohup启动Jupyter,同时把运行日志写入本地文件:
    nohup jupyter notebook --no-browser --port=xxxx > jupyter_run.log 2>&1 &
  • 本地建立ssh隧道时添加心跳参数,降低ssh连接无故断开的概率:
    ssh -o ServerAliveInterval=60 -L yyyy:localhost:xxxx user@server.domain

3. 重连后缺失输出的补救方法

  • 重连后先刷新页面,开启输出缓冲的配置下会自动拉取断开期间的所有输出
  • 如果刷新后仍看不到输出,可直接在服务器端打开对应的ipynb文件,自动保存的执行结果已经写入文件,可直接查看
  • 对于超长时间运行的任务,建议在代码中手动添加日志写入逻辑,将关键输出同步写入本地log文件,作为双重保障

内容的提问来源于stack exchange,提问作者Angel33

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:45:04