谷歌应用引擎如何限制Python?

谷歌应用引擎如何限制Python?,python,hosting,shared-hosting,Python,Hosting,Shared Hosting,有人知道,GAE是如何限制Python解释器的吗?例如,它们如何阻止IO操作或URL操作 共享主机也可以通过某种方式实现吗?我找到了这个网站 这有一些相当不错的信息。你到底想干什么 新鲜! 看这里: 您的IO操作限制如下(除禁用的模块外): App Engine记录应用程序在一个日历日内使用的每个资源的数量,并在该数量达到应用程序的资源配额时考虑资源耗尽。日历日是从太平洋时间午夜开始的24小时。App Engine在每天开始时重置所有资源测量值,但存储的数据除外,存储的数据始终表示正在使用的数

有人知道,GAE是如何限制Python解释器的吗?例如,它们如何阻止IO操作或URL操作

共享主机也可以通过某种方式实现吗?

我找到了这个网站 这有一些相当不错的信息。你到底想干什么

新鲜! 看这里:

您的IO操作限制如下(除禁用的模块外):

App Engine记录应用程序在一个日历日内使用的每个资源的数量,并在该数量达到应用程序的资源配额时考虑资源耗尽。日历日是从太平洋时间午夜开始的24小时。App Engine在每天开始时重置所有资源测量值,但存储的数据除外,存储的数据始终表示正在使用的数据存储量

当一个应用程序消耗了所有分配的资源时,该资源将变得不可用,直到配额被补充。这可能意味着您的应用程序将无法工作,直到配额补充

应用程序可以通过调用配额API来确定当前请求到目前为止占用了多少CPU时间。这有助于分析CPU密集型代码,并找到可以提高CPU效率以节省更多成本的地方。您可以测量整个请求使用的CPU,或者在一段代码之前和之后调用API,然后减去以确定这两点之间使用的CPU

资源|自由默认配额|计费启用默认配额 Blobstore |存储数据| 1 GB | 1 GB免费;无上限 资源|已启用计费|默认配额 每日限额|最高费率 Blobstore API调用12400000次调用| 72000次调用/分钟

嗯,我的桌子不是很好,但希望还是可读的

编辑:好的,我明白了。但是,先生,您不必使用“f”字你知道,这有点像整个“教人钓鱼”的场景。谷歌是我经常问的人,这就是为什么我在这里回答问题是为了好玩

再次编辑:好的,这在注释被嘟嘟声之前更有意义。所以我又去回答了一点问题。我希望这能有所帮助。

来自谷歌网站:

  • 应用程序只能访问其他应用程序 互联网上的计算机通过 提供URL获取和电子邮件 服务。其他计算机只能 通过以下方式连接到应用程序: 服务器上的HTTP(或HTTPS)请求 标准端口

  • 应用程序无法写入数据 文件系统。应用程序可以读取文件, 但只有使用 应用程序代码。应用程序必须使用 应用程序引擎数据存储、memcache或 为所有需要的数据提供的其他服务 在请求之间持续存在

  • 应用程序代码仅在中运行 对web请求的响应,排队的 任务或计划任务,并且必须 在30分钟内返回响应数据 在任何情况下都是几秒钟。请求 处理程序无法生成子进程或 在响应完成后执行代码 已经发出了

除此之外,您还必须使用Python2.5,不能使用任何基于C的扩展,更先进的web框架版本在某些情况下无法工作(再次使用Python2.5)

您可以阅读整篇文章。

沙盒“内部工作”是由他们拥有一个特殊版本的Python解释器实现的。您运行的不是标准的Python可执行文件,而是经过特别修改以在Google App engine上运行的可执行文件

更新:

不,它不是一般意义上的虚拟机。每个应用程序都没有一台完整的虚拟PC。可能会有一些虚拟化正在进行,但谷歌并没有具体说明虚拟化的数量

进程通常在操作系统中已经限制了对其余操作系统和硬件的访问。谷歌对这一点的限制更为严格,在这样的环境中,你只允许读取文件系统的特定部分,而不允许写入文件系统,不允许打开套接字,也不允许进行系统调用等


不过,我不知道在操作系统/文件系统/解释器的哪个级别实现了每个限制。

IMO它不是标准的python,而是专门为app engine修补的版本。换句话说,您可以多多少少像一个“更高级别”的VM,但它不是模拟x86指令,而是模拟python操作码(如果您不知道它们在做什么,请尝试编写一个名为“foo”的小函数并执行“import dis;dis.dis(foo)”,您将看到编译器生成的python操作码)

通过修补python,您可以对其施加任何限制。当然,您必须禁止使用用户提供的C/C++扩展模块,因为C/C++模块可以访问进程可以访问的所有内容


使用这样的虚拟环境,您可以安全地运行python代码,而无需为每个实例使用单独的x86虚拟机。

首先,您只能使用python 2.5Yes。只有2.5。但是“沙盒”内部是如何工作的呢?OP正在寻找AppEngine是如何阻止/限制python对操作系统的访问的,而不是它们限制了什么。我想@Anton想知道谷歌构建一个类似GAE使用的沙盒的技术/方法。啊,好吧,谢谢,这更有意义。每个应用程序都使用一个虚拟机吗?@Anton我不确定实现细节,但你可能会把沙盒想象成一个虚拟机。你需要了解问题和评论之间的区别。这是粗鲁和诚实之间的区别。如果你有什么有用的话,你应该只留下一个答案。我真的认为提供一个直接指向信息的链接是有帮助的,但我想不是,所以我自己读了它,并在这里粘贴了一些内容。读起来很有趣!我向任何人推荐它,特别是当你在StackOverflow上询问有关该主题的问题时。它很有趣,但实际上并不能回答问题。这些页面以什么方式不能回答问题?编辑:好的,他想知道他怎样才能做到和他们一样的事情,不是吗