18

编写Google App Engine Python 代码时是否有任何指南,无需 Google 的基础架构即可在其​​他平台上运行?

是否有任何已知的尝试来创建一个可以在其他平台上运行为 Google App Engine 设计的应用程序的开源框架?

编辑:

为了澄清,问题实际上是:

如果我现在在 Google App Engine 上开发一个应用程序,我以后可以迁移到另一个平台,还是被锁定?

4

9 回答 9

33

使应用程序完全可移植需要许多组件:

  • 运行时环境本身。这可以通过设置模拟 App Engine 环境(其本身基本上是略微增强的 CGI)的 CGI 或 FastCGI 服务器来相对简单地移植。大部分执行此操作的代码已经在 SDK 中。不幸的是,目前还没有简单的预打包工具包。
  • 数据存储。迄今为止最复杂的移植 API。正在进行许多努力:AppScale在 EC2/Eucalyptus/Xen 上运行并使用 HyperTable 或 HBase 后端;它仍然是测试版质量,并且他们不会单独分发数据连接器(这是完整的 run-your-app-on-your-own-cloud 解决方案的开始)。Jens 正在/正在编写一个SQLite 后端,还有我自己的项目BDBDatastore,它使用 BDB-JE 作为后端,并且功能齐全(尽管是 beta 质量)。其他人提到的AppDrop只是将开发服务器用作后端,因此不适合生产使用。
  • 用户 API 需要替换为其他东西,例如基于 OpenID 的 API。同样,相当简单,但还没有预制的解决方案。
  • Memcache API 需要一个使用标准 C memcache 后端的后端。
  • 作为 SDK 的一部分,其他 API 具有功能完善的后端,因此不需要移植。
  • Cron 支持也需要实现,后台处理、XMPP 等在可用时也需要实现。

正如您所看到的,还有很多工作要做,但让您的 App Engine 应用程序在 Google 环境之外运行没有根本障碍。事实上,如果您有兴趣,我们非常欢迎您参与 - 我和其他人计划将各个部分的解决方案组合成一个单一的“OpenEngine”解决方案,以托管您自己的应用程序。

于 2009-05-21T19:09:25.810 回答
7

使用适用于 App-Engine 的高级框架。这样,您可以在需要时将代码移植到其他服务器。

django 已经打补丁并移植到Appengine 补丁项目中,并且是 appengine 上使用最多的 FW。

您可能想参考此逐步介绍在 App 引擎上运行 django 应用程序

就运行应用程序引擎应用程序的并行基础架构而言,这还很遥远。App Engine 本身并没有像人们想象的那样流行,也没有谷歌希望的那样流行。另外,在内置 WebApp 框架上开发比在 django 上更难。

至少在未来几年内,它不太可能看到运行应用程序引擎应用程序的并行基础架构。相反,很可能会看到 django 和其他流行的框架在应用程序引擎上开箱即用,而这方面的工作目前正在参考项目中进行。

于 2009-05-21T11:34:51.737 回答
3

到目前为止,我找到了一个名为app-drop的实验主机,它能够托管 google app-engine 项目。这应该意味着至少可以在谷歌基础设施之外运行应用引擎项目。

然而,这显然还不适合生产。

于 2009-05-21T11:29:56.923 回答
3

您可以使用 Django python 框架构建 AppEngine 应用程序(尽管支持的版本比最新的 Django 版本稍逊一筹)。您失去可移植性的地方(至少现在是这样)是在使用 GQL/BigTable 进行持久性时。这是谷歌专有的数据库平台。正如 Hank 所说,这是实际使用 AppEngine 的最大原因之一,但它也是最大的单一锁定点。

以下是 AppEngine 和 GQL/BigTable 中 Django 支持的几个链接:

于 2009-05-21T11:33:44.733 回答
1

代码应该大部分是可移植的(它们很好地指出了哪些模块不能在 AppEngine 上使用,哪些 AppEngine 特定代码对应于哪些禁止模块),但 AppEngine 的全部意义在于访问 Google 的基础架构. 如果您不打算使用 AppEngine 的基础架构,那么将代码写入 AppEngine 限制没有多大意义。

于 2009-05-21T11:20:45.603 回答
1

AppDrop是2008年4月完成的AppEngine到Amazon Web Services / Elastic Computing的概念验证端口。它使用平面文件而不是BigTable并且在单个实例中运行,因此存在扩展问题;但它的开发者说他只用了四天,也许这些限制可以由其他人解决。

于 2009-05-21T11:35:57.943 回答
0

我最近通过使用 WHIFF 资源非常轻松地完成了从 vanilla Unix 到应用程序引擎的反向迁移。基本上将任何依赖于平台的东西配置为资源,然后在不同的配置上交换/替换资源。

http://piopio.appspot.com/W1000_1000.resources

也见

http://aaron.oirt.rutgers.edu/myapp/docs/W1100_1200.wwiki

有关资源交换/配置的详细示例。(注意:链接最终可能会消失,应用程序是实验性的。)

于 2009-07-21T14:13:47.420 回答
0

检查台风。它处于测试阶段,但非常有用——我们将其中一个应用程序移至运行此堆栈的内部服务器。

于 2010-05-09T17:48:12.403 回答
0

AppScale 是 Google App Engine 最成熟的开源实现。它自 2008 年开始开发,目前支持所有四种语言:Python、Java、Go 和 PHP。它让用户今天在生产中运行他们的应用程序。

常见问题解答解释了支持哪些 API 以及缺少哪些 API: https ://github.com/AppScale/appscale/wiki/FAQs

(免责声明:我从事该项目)

于 2014-02-17T20:48:14.893 回答