繁体   English   中英

Google App Engine如何限制Python?

[英]How Google App Engine limit Python?

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

共享托管也以某种方式做到了吗?

来自Google的网站:

  • 应用程序只能通过提供的URL提取和电子邮件服务访问Internet上的其他计算机。 其他计算机只能通过在标准端口上发出HTTP(或HTTPS)请求来连接到应用程序。

  • 应用程序无法写入文件系统。 应用程序可以读取文件,但只能读取随应用程序代码上载的文件。 应用程序必须对请求之间存在的所有数据使用App Engine数据存储区,内存缓存或其他服务。

  • 应用程序代码仅响应Web请求,排队的任务或计划的任务而运行,并且在任何情况下都必须在30秒内返回响应数据。 请求处理程序在发送响应后不能生成子进程或执行代码。

除此之外,您还无法使用Python 2.5,不能使用任何基于C的扩展,在某些情况下,Web框架的最新版本将无法使用(再次使用Python 2.5)。

您可以阅读整篇文章什么是Google App Engine?

沙盒“内部工作”由他们有一个特殊版本的Python解释器。 您没有运行标准Python可执行文件,但是特别修改了可执行文件以在Google App引擎上运行。

更新:

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

进程通常在操作系统中已经限制了对其余OS和硬件的访问。 Google对此进行了更多限制,您将获得一个环境,在该环境中,您只能读取文件系统的非常特定的部分,而不能对其进行任何写入,您不能打开套接字,也不能进行系统调用等。 。

我不知道每个限制在哪个级别的OS / Filesystem / Interpreter上实现。

我找到了这个网站

这有一些相当不错的信息。 你究竟想做什么?

这里

新鲜!

在这里查看: http : //code.google.com/appengine/docs/python/runtime.html

您的IO操作受限于以下(禁用模块除外):

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

当应用程序使用所有已分配的资源时,资源将变为不可用,直到补充配额为止。 这可能意味着您的应用在配额补充之前无法运行。

应用程序可以通过调用Quota API来确定当前请求已花费了多少CPU时间。 这对于分析CPU密集型代码以及查找可以提高CPU效率以节省更多成本的地方很有用。 您可以测量用于整个请求的CPU,或者在代码段之前和之后调用API,然后减去以确定在这两个点之间使用的CPU。

资源| 免费默认配额| 启用计费的默认配额Blobstore |存储的数据| 1 GB | 1 GB免费; 没有最大资源|开票已启用| 默认配额每日限额| 最大速率Blobstore API调用| 140,000,000次调用| 每分钟72,000次通话

嗯,我的桌子不是很好,但希望仍然可读。

编辑:好的,我明白了。 但是,先生,您不必使用“ f”一词。 :)而且,这有点像整个“教人钓鱼”的场景。 我一直在问Google,这就是为什么我在这里回答问题很有趣的原因。

再次编辑:好的,在进行评论之前,这更有意义。 所以我去回答了这个问题。 我希望它有所帮助。

IMO它不是标准的python,而是专为app引擎打补丁的版本。 换句话说,你可以或多或少地想象一个“更高级别”的虚拟机,但它不是模拟x86指令而是python操作码(如果你不知道他们在尝试编写一个名为“foo”的小函数并且执行“import” dis; dis.dis(foo)“你会看到编译器生成的python操作码”。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM