我将笔记本电脑服务器嵌入独立的OS X应用程序中,服务器在子进程中启动(通过NSTask),应用程序通过HTTP连接到该进程,并在WebView中呈现Web前端。
我希望OS X应用程序部分能够在服务器子进程中查询各种状态信息,最重要的是如果有任何笔记本打开了未保存的更改。我想知道是否有某种方法可以在特殊的URL上查询,例如
http://127.0.0.1:8888/status.json
我想要做的另一件事是控制笔记本服务器,例如告诉它在关闭之前保存任何未保存的更改。
答案 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
进行测试