5

作为使scikit-image 示例库具有交互性的努力的一部分,我想构建一个 Web 服务,它接收 Python 代码片段,执行它,并为我提供生成的输出图像。

为了安全起见,启动的 Python 实例应该是沙盒和资源控制的,所以我在考虑使用 LXC 容器。

这是解决问题的好方法吗?如果是这样,每个请求启动一个 Python VM 的推荐方法是什么?

4

4 回答 4

5

Stefan,也许“Docker”可能有用?我的印象是您可以限制运行应用程序的虚拟机——一个示例 Web 服务:

http://docs.docker.io/en/latest/examples/python_web_app/

您可以尝试在 Digital Ocean 上运行该应用程序,如下所示:

https://www.digitalocean.com/community/articles/how-to-install-and-use-docker-getting-started

于 2014-02-08T05:19:29.980 回答
4

[免责声明:我是 Continuum 的一名工程师,从事 Wakari 工作]

Wakari Enterprise ( http://enterprise.wakari.io ) 旨在做到这一点,我们希望将功能反向移植到 Wakari Cloud ( http://wakari.io ) 中,以便“发布”的 IPython Notebooks 可以上面有一些旋钮用于可变输入控制,然后可以在沙盒状态下“调用”它们,然后将输出返回给用户。

但是对于现在存在的东西,你应该看看 Sage Notebook。几年前,几个人在 Sage Notebook Cell Server 上努力工作,它可以完全满足您的要求:执行小代码片段。从那以后我就没有关注过它,但从快速搜索来看,它似乎还活着并且很好:

http://sagecell.sagemath.org/?q=ejwwif

http://sagecell.sagemath.org

http://www.sagemath.org/eval.html

对于最后一个 URL,查看 Graphics->Mandelbrot,您可以看到 Sage 已经为与“单元执行”相关联的 UI 小部件提供了一些强大的功能。

于 2014-02-08T11:50:07.747 回答
2

我认为 docker 是解决这个问题的方法。这些实例的重量非常轻,docker 旨在一次生成 100 个实例(启动时间是几分之一秒,而传统的 VM 是几秒钟)。正确配置我相信它也为您提供了一个完整的沙盒环境。那么尝试沙箱python并不重要:-D

于 2014-02-10T12:48:08.617 回答
0

我不确定你是否真的需要设置 LXC 容器:

seccomp-nurse ,这是一个利用Linux 内核的seccomp功能的Python 沙箱。

另一种选择是使用 PyPy,它明确支持开箱即用的沙盒。

无论如何,不​​要使用pysandbox,它被设计破坏并且具有严重的安全风险。

于 2014-01-13T15:37:09.413 回答