Heroku 上的交互式 Ipython 笔记本
Interactive Ipython Notebooks on Heroku
我目前正在尝试制作 python 教程并在 Heroku 站点上使用 ipython 笔记本托管它们。问题是 ipython 笔记本在上传时是静态的。我正在努力使用户可以交互使用笔记本(例如打印输出)。我也不希望他们笔记本的输出永久保存在 Heroku 网站上。
据我了解,您有 2 个问题需要处理:
- 交互式笔记本
- "read only" 笔记本(不保存修改)
对于问题 1,您需要使用 jupyter(笔记本的新 IPython 名称)服务器。仅显示笔记本是不够的,因为您需要一个服务器来 "understand" 并执行修改。参见:http://jupyter-notebook.readthedocs.io/en/latest/public_server.html
我不熟悉 Heroku,在谷歌搜索 2 秒后我发现了这个:https://github.com/pl31/heroku-jupyter 它能够在演示 heroku 机器上部署一个工作的 Jupyter 服务器。
在我看来,问题 2 更难解决。
当 "learners" 更改笔记本时,修改将应用于笔记本文件 (.ipnb),因此修改将持久化...这不是您想要的。
您可以尝试一些使用文件权限的技巧来阻止内核保存文件,但我认为这只会使内核崩溃...
此外,它还会询问几个用户交互问题,例如,如果我失去互联网连接怎么办?我会失去工作吗?为什么 ?这是我作为学习者真正想要的吗?
为此,最好的解决方案是为用户提供对笔记本/工作区的访问权限,她可以在其中保存她的进度,但这比部署 jupyter 服务器需要更多的工作。例如,参见 databricks.com(想到的第一个(唯一)一个,不一定是最好的)。
(顺便说一下,多用户模式好像已经实现了:https://jupyterhub.readthedocs.io/en/latest/)
关于服务器的安全性,我想补充一点。如果您没有为后果做好准备,让陌生人访问带有嵌入式 shell 的服务器听起来是个坏主意。我建议您看看如何将每个用户的 jupyter 会话放在一个 "jail" / 容器中,任何在 Heroku 中工作的东西。
我目前正在尝试制作 python 教程并在 Heroku 站点上使用 ipython 笔记本托管它们。问题是 ipython 笔记本在上传时是静态的。我正在努力使用户可以交互使用笔记本(例如打印输出)。我也不希望他们笔记本的输出永久保存在 Heroku 网站上。
据我了解,您有 2 个问题需要处理:
- 交互式笔记本
- "read only" 笔记本(不保存修改)
对于问题 1,您需要使用 jupyter(笔记本的新 IPython 名称)服务器。仅显示笔记本是不够的,因为您需要一个服务器来 "understand" 并执行修改。参见:http://jupyter-notebook.readthedocs.io/en/latest/public_server.html
我不熟悉 Heroku,在谷歌搜索 2 秒后我发现了这个:https://github.com/pl31/heroku-jupyter 它能够在演示 heroku 机器上部署一个工作的 Jupyter 服务器。
在我看来,问题 2 更难解决。
当 "learners" 更改笔记本时,修改将应用于笔记本文件 (.ipnb),因此修改将持久化...这不是您想要的。
您可以尝试一些使用文件权限的技巧来阻止内核保存文件,但我认为这只会使内核崩溃...
此外,它还会询问几个用户交互问题,例如,如果我失去互联网连接怎么办?我会失去工作吗?为什么 ?这是我作为学习者真正想要的吗?
为此,最好的解决方案是为用户提供对笔记本/工作区的访问权限,她可以在其中保存她的进度,但这比部署 jupyter 服务器需要更多的工作。例如,参见 databricks.com(想到的第一个(唯一)一个,不一定是最好的)。
(顺便说一下,多用户模式好像已经实现了:https://jupyterhub.readthedocs.io/en/latest/)
关于服务器的安全性,我想补充一点。如果您没有为后果做好准备,让陌生人访问带有嵌入式 shell 的服务器听起来是个坏主意。我建议您看看如何将每个用户的 jupyter 会话放在一个 "jail" / 容器中,任何在 Heroku 中工作的东西。