Heroku上的交互式Ipython笔记本

时间:2015-10-31 23:01:55

标签: python python-3.x heroku ipython-notebook

我目前正在尝试制作python教程并使用Heroku网站上的ipython笔记本托管它们。问题是ipython笔记本在上传时是静态的。我试图让用户可以交互使用笔记本电脑(如打印输出)。我也不希望他们的笔记本电脑的输出永久保存在Heroku网站上。

1 个答案:

答案 0 :(得分:1)

根据我的理解,您有两个问题需要处理:

  • 互动笔记本
  • “只读”笔记本(不保存修改)

对于问题1,您需要使用jupyter(笔记本电脑的新IPython名称)服务器。仅显示笔记本是不够的,因为您需要服务器来“理解”并执行修改。请参阅:http://jupyter-notebook.readthedocs.io/en/latest/public_server.html

我不熟悉Heroku,在谷歌搜索2s之后我发现了这个:https://github.com/pl31/heroku-jupyter能够在demo Heroku机器上部署一个工作的Jupyter服务器。

据我所知,问题2更难以解决。

当“学习者”更改笔记本时,修改将应用于笔记本文件(.ipnb),因此修改将持续...这不是您想要的。

您可以使用文件权限尝试一些技巧来阻止内核保存文件,但我认为这只会导致内核崩溃......

此外,它会询问几个用户交互问题,例如,如果我丢失了我的互联网连接怎么办?我会放松工作吗?为什么?这是我真正想要的学习者吗?

为此,最好的解决方案是为用户提供访问笔记本/工作场所的权限,以便保存自己的进度,但这比仅部署jupyter服务器要多得多。作为一个例子,请参阅databricks.com(第一个(唯一的)想到的,不一定是最好的。)

(作为评论,似乎多用户模式已经实现:https://jupyterhub.readthedocs.io/en/latest/

我想补充一下关于服务器安全性的最后一句话。如果你没有为后果做好准备,让陌生人访问带有嵌入式shell的服务器听起来像个坏主意。我建议你看看如何将每个用户的jupyter会话放在一个“监狱”/容器中,任何在Heroku中工作的东西。