编写Google App Engine Python 代码时是否有任何指南,无需 Google 的基础架构即可在其他平台上运行?
是否有任何已知的尝试来创建一个可以在其他平台上运行为 Google App Engine 设计的应用程序的开源框架?
编辑:
为了澄清,问题实际上是:
如果我现在在 Google App Engine 上开发一个应用程序,我以后可以迁移到另一个平台,还是被锁定?
编写Google App Engine Python 代码时是否有任何指南,无需 Google 的基础架构即可在其他平台上运行?
是否有任何已知的尝试来创建一个可以在其他平台上运行为 Google App Engine 设计的应用程序的开源框架?
编辑:
为了澄清,问题实际上是:
如果我现在在 Google App Engine 上开发一个应用程序,我以后可以迁移到另一个平台,还是被锁定?
使应用程序完全可移植需要许多组件:
正如您所看到的,还有很多工作要做,但让您的 App Engine 应用程序在 Google 环境之外运行没有根本障碍。事实上,如果您有兴趣,我们非常欢迎您参与 - 我和其他人计划将各个部分的解决方案组合成一个单一的“OpenEngine”解决方案,以托管您自己的应用程序。
使用适用于 App-Engine 的高级框架。这样,您可以在需要时将代码移植到其他服务器。
django 已经打补丁并移植到Appengine 补丁项目中,并且是 appengine 上使用最多的 FW。
您可能想参考此逐步介绍在 App 引擎上运行 django 应用程序
就运行应用程序引擎应用程序的并行基础架构而言,这还很遥远。App Engine 本身并没有像人们想象的那样流行,也没有谷歌希望的那样流行。另外,在内置 WebApp 框架上开发比在 django 上更难。
至少在未来几年内,它不太可能看到运行应用程序引擎应用程序的并行基础架构。相反,很可能会看到 django 和其他流行的框架在应用程序引擎上开箱即用,而这方面的工作目前正在参考项目中进行。
到目前为止,我找到了一个名为app-drop的实验主机,它能够托管 google app-engine 项目。这应该意味着至少可以在谷歌基础设施之外运行应用引擎项目。
然而,这显然还不适合生产。
您可以使用 Django python 框架构建 AppEngine 应用程序(尽管支持的版本比最新的 Django 版本稍逊一筹)。您失去可移植性的地方(至少现在是这样)是在使用 GQL/BigTable 进行持久性时。这是谷歌专有的数据库平台。正如 Hank 所说,这是实际使用 AppEngine 的最大原因之一,但它也是最大的单一锁定点。
以下是 AppEngine 和 GQL/BigTable 中 Django 支持的几个链接:
代码应该大部分是可移植的(它们很好地指出了哪些模块不能在 AppEngine 上使用,哪些 AppEngine 特定代码对应于哪些禁止模块),但 AppEngine 的全部意义在于访问 Google 的基础架构. 如果您不打算使用 AppEngine 的基础架构,那么将代码写入 AppEngine 限制没有多大意义。
AppDrop是2008年4月完成的AppEngine到Amazon Web Services / Elastic Computing的概念验证端口。它使用平面文件而不是BigTable并且在单个实例中运行,因此存在扩展问题;但它的开发者说他只用了四天,也许这些限制可以由其他人解决。
我最近通过使用 WHIFF 资源非常轻松地完成了从 vanilla Unix 到应用程序引擎的反向迁移。基本上将任何依赖于平台的东西配置为资源,然后在不同的配置上交换/替换资源。
http://piopio.appspot.com/W1000_1000.resources
也见
http://aaron.oirt.rutgers.edu/myapp/docs/W1100_1200.wwiki
有关资源交换/配置的详细示例。(注意:链接最终可能会消失,应用程序是实验性的。)
检查台风。它处于测试阶段,但非常有用——我们将其中一个应用程序移至运行此堆栈的内部服务器。
AppScale 是 Google App Engine 最成熟的开源实现。它自 2008 年开始开发,目前支持所有四种语言:Python、Java、Go 和 PHP。它让用户今天在生产中运行他们的应用程序。
常见问题解答解释了支持哪些 API 以及缺少哪些 API: https ://github.com/AppScale/appscale/wiki/FAQs
(免责声明:我从事该项目)