是否有IPython笔记本服务器状态查询?

时间:2013-02-27 05:51:04

标签: ipython

我将笔记本电脑服务器嵌入独立的OS X应用程序中,服务器在子进程中启动(通过NSTask),应用程序通过HTTP连接到该进程,并在WebView中呈现Web前端。

我希望OS X应用程序部分能够在服务器子进程中查询各种状态信息,最重要的是如果有任何笔记本打开了未保存的更改。我想知道是否有某种方法可以在特殊的URL上查询,例如

http://127.0.0.1:8888/status.json

我想要做的另一件事是控制笔记本服务器,例如告诉它在关闭之前保存任何未保存的更改。

1 个答案:

答案 0 :(得分:3)

没有一般的“状态”查询,但您可以通过GET请求查看现有笔记本的JSON摘要

http://127.0.0.1:8888/notebooks

这将为您提供表格的序列列表:

[
 {
  "kernel_id": null, 
  "name": "Animations Using clear_output", 
  "notebook_id": "49222a70-b746-4fb2-9b96-fe1a61e82979"
 }, 
 {
  "kernel_id": "2e8de018-c816-4222-82d2-4a35cfa95f1c", 
  "name": "Cell Magics", 
  "notebook_id": "38ce96ab-b456-4af1-b68d-44a1a3ce86ee"
 }
]

kernel_id=null表示笔记本未运行,而kernel_id=U-U-I-D表示笔记本未运行。

  

最重要的一个是如果有任何笔记本打开未保存的更改

未保存的更改无法知晓,因为此信息仅存在于浏览器中 - 服务器甚至不知道文档已被编辑,因此无需查询。

  

我想要做的另一件事是控制笔记本服务器,例如告诉它在关闭之前保存任何未保存的更改。

这是不可能的,因为实时文档实际上并不存在于服务器中。编辑过的文档仅在编辑笔记本的浏览器窗口中存在浏览器端

如果要检查未保存的已更改和/或触发器保存,则必须通过与WebView中的javascript交互来执行此操作 - js中的notebook对象具有“脏”标志,表示存在未保存的更改。所以'保存任何未保存的更改'将是:

if (IPython.notebook.dirty) { IPython.notebook.save_notebook(); }

使用IPython 1.0.dev

进行测试