在Chrome中运行的Jupyter Notebook在服务器重新启动时卡住了

时间:2018-07-06 06:29:41

标签: python jupyter-notebook jupyter

我从一个有效的jupyter设置开始,一切正常。我可以从笔记本上中断或重新启动内核,而不会出现任何问题。

但是,如果我更改了一些jupyter配置或安装了一些模块,并重新启动了jupyter服务器-我必须等待大约5分钟,以便打开的笔记本恢复对python内核的访问权限

重现该问题:

  1. 启动jupyter(本地shell)

    jupyter笔记本

  2. 在chrome中创建一个新的笔记本(python 3),这将导致以下网址:

    http://localhost:8888/notebooks/Untitled1.ipynb?kernel_name=python3

  3. 在该新笔记本中创建并运行一个单元格:

    print(1)

  4. 重新启动jupyter(Ctrl-C,然后按[yes]退出提示),然后:

    jupyter笔记本

  5. 使用相同的单电池笔记本进入相同的Chrome标签,然后单击“确定”以弹出"Connection failed"

  6. 观察笔记本显示:[Connecting to Kernel]失败。

  7. 尝试通过菜单重新启动内核,通常它卡在[Kernel Starting...]中,并且在几次手动强制内核重新启动后,它成功了[Kernel Created],但尝试失败是错误的成功运行单元格会显示[*]忙碌信号,什么也没发生。

等待大约5分钟后,它会自动恢复。

解决方法:

  • 在浏览器中重新加载笔记本(即在浏览器级别点击“重新加载”)
  • 重新启动Chrome

软件:

  • ubuntu 16.04
  • 笔记本5.5.0
  • python 3.6.6
  • chrome 67
  • 未启用adblock软件
  • 空〜/ .jupyter(为了测试而删除了所有内容,因此没有扩展名或自定义配置)

同一设置在同一台计算机上的Firefox中可以正常工作。

github上有几张与2015年相同的票证(例如this,但以某种方式他们将其归咎于chrome,显然问题在3年后仍然存在。

有什么办法解决这个问题吗?

谢谢。

这是打开笔记本电脑重新连接/重新启动过程中的日志:

[I 22:54:09.032 NotebookApp] Kernel restarted: 9aa08efb-74b1-471c-ad0f-bb9dc3577c28
[W 22:54:09.343 NotebookApp] Replacing stale connection: 6cc8a446-1dc0-4c01-86ab-f95ae99c24af:10a12a1b834f43298fb9e6f344bc6b26
[W 22:54:45.348 NotebookApp] Replacing stale connection: 6cc8a446-1dc0-4c01-86ab-f95ae99c24af:10a12a1b834f43298fb9e6f344bc6b26
[W 22:55:37.359 NotebookApp] Replacing stale connection: 6cc8a446-1dc0-4c01-86ab-f95ae99c24af:10a12a1b834f43298fb9e6f344bc6b26
[W 22:57:01.367 NotebookApp] Replacing stale connection: 6cc8a446-1dc0-4c01-86ab-f95ae99c24af:10a12a1b834f43298fb9e6f344bc6b26
[I 22:57:41.337 NotebookApp] Adapting to protocol v5.1 for kernel 9aa08efb-74b1-471c-ad0f-bb9dc3577c28
[W 22:57:41.350 NotebookApp] Replacing stale connection: 9aa08efb-74b1-471c-ad0f-bb9dc3577c28:768880fb9a244da99735e983bd6c36c6
[I 22:57:41.351 NotebookApp] Starting buffering for 9aa08efb-74b1-471c-ad0f-bb9dc3577c28:768880fb9a244da99735e983bd6c36c6
[I 22:57:41.351 NotebookApp] Adapting to protocol v5.1 for kernel 9aa08efb-74b1-471c-ad0f-bb9dc3577c28
[I 22:57:41.352 NotebookApp] Restoring connection for 9aa08efb-74b1-471c-ad0f-bb9dc3577c28:768880fb9a244da99735e983bd6c36c6
[I 22:57:49.324 NotebookApp] Starting buffering for 9aa08efb-74b1-471c-ad0f-bb9dc3577c28:768880fb9a244da99735e983bd6c36c6
[I 22:57:49.327 NotebookApp] Adapting to protocol v5.1 for kernel 9aa08efb-74b1-471c-ad0f-bb9dc3577c28
[I 22:57:49.328 NotebookApp] Restoring connection for 9aa08efb-74b1-471c-ad0f-bb9dc3577c28:768880fb9a244da99735e983bd6c36c6

2 个答案:

答案 0 :(得分:2)

如果您不使用多用户环境,则解决方案是禁用安全功能,以防止用于启动浏览器的身份验证令牌可见(该令牌可以被同一计算机上的其他用户劫持)。

如果您还没有jupyter笔记本配置文件(在Linux上通常是~/.jupyter/jupyter_notebook_config.py):

  1. 创建它:

    $ jupyter notebook --generate-config

  2. 在文本编辑器中打开自动生成的文件并找到以下行:

    #c.NotebookApp.use_redirect_file = True

  3. 如果已注释掉该行,则取消注释

  4. True替换为False

如果您已经有了配置文件,但没有此设置,只需将其添加到其中即可:

c.NotebookApp.use_redirect_file = False

更改配置文件后,您需要重新启动jupyter服务器。

请注意,您需要jupyter-notebook> = 6.0.3才能使用此功能。

最后,请记住,每次重新启动jupyter服务器后,您必须重新加载每个笔记本才能正常工作。仅重新启动内核并不能解决此问题(即使它误导性地表示内核已重新启动)。

答案 1 :(得分:0)

这是一项安全功能,Chrome没错,它只是在5分钟后自动重新加载,因为您以某种方式在各个标签之间进行了切换。

如果您在登录时打开站点,您看到的只是主站点URL(而不是您的密码),与新的jupyter笔记本相同,您需要一个特殊的(随机)密钥,就像获得密码一样jupyter服务器在启动任何内核之前都工作在第一位,当您启动jupyter并打开“ main”选项卡时,它会自动发生,浏览器会保留打开(或刷新)任何新选项卡的密钥

当您不刷新旧页面时,您只是注销了,

此功能用于保护您免受观看您发送到公共Web服务器的内容的人的侵害

我仍然看不到您的情况有什么用(保留页面,然后重新启动服务器),这就像暂停后端,但希望前端仍能正常工作!