我们能在Ubuntu/Windows上运行Google App Engine并提供Web应用吗?

4 投票
2 回答
1180 浏览
提问于 2025-04-15 14:29

我看到谷歌提供了一些工具和软件包,可以用来开发和运行网页应用程序,先在开发者的电脑上进行开发,然后再把它们转移到谷歌的服务器上去运行。

那么,我们能不能在不使用谷歌基础设施的情况下,利用谷歌应用引擎来运行本地的网页应用呢?

其实我想要一个不错的任务调度器和持久的任务队列,专门用来处理Python程序(我不打算使用谷歌的基础设施)。我注意到谷歌在他们的应用引擎软件包中提供了任务队列的实现。

我可以使用谷歌应用引擎的软件包来开发我完整的Python应用程序,用于任务队列吗?

2 个回答

-1

我觉得不是这样的。根据App Engine的服务条款:

7.1. 谷歌给你一个个人的、全球范围内的、免版税的、不可转让的和非独占的许可,让你使用谷歌提供给你的软件,这些软件是作为服务的一部分提供的(下面称为“谷歌App Engine软件”)。这个许可的唯一目的是让你能够使用和享受谷歌提供的服务,并且是在条款允许的方式下使用。

(强调是我的)

你最好咨询一下律师,但在我看来,这段话的意思是,dev_appserver.py这个服务器只能用来开发应用程序,然后再把这些应用程序部署到GAE“服务”上,而不是用来在内部运行你自己的服务器。

我还怀疑,用dev_appserver.py来运行生产服务是不明智的,因为性能方面可能会有问题。一般来说,没有特别的努力,使用线程的Python网络服务器通常只能同时处理一个请求,这样就限制了你的性能和扩展性。这是因为CPython的一个实现细节,叫做全局解释器锁(GIL)。想了解更多详细信息,可以查看http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock

8

你可以在 appscale 上运行 App Engine 应用,而 appscale 又是建立在 Eucalyptus、Xen 和其他可以在 Ubuntu 上部署的集群解决方案之上的(不太确定是否有 Windows 支持)。看起来要开始使用这些东西需要花费不少时间来安装、配置和管理系统(抱歉,我没有亲身经历过),但一旦你完成了这些准备工作,后续的使用可能会顺利很多。(任务队列的自动化是 appscale 最近才添加的功能,但它似乎已经在运行,并且可以从一个叫 bazaar 的分支中进行修补,直到它完全整合进 appscale 项目的主干中)。

编辑:由于关于这段代码的许可协议似乎有些混淆,我想说明一下,App Engine SDK 根据 它的网站,是采用 Apache License 2.0,而 appscale 则是采用新 BSD 许可证。这两种许可证都是非常宽松和自由的开源许可证,基本上允许你进行各种重用、混合、合并、再分发等等。

编辑:Nick 还建议提到 TwistedAE,这是另一个开源项目(同样是 Apache License 2.0),旨在让你可以在自己的基础设施上部署 App Engine 应用;我没有直接使用过它,而且它仍然处于预发布阶段,但看起来非常有前景,值得关注一下(谢谢你,Nick!)。

撰写回答