打破Google App Engine Python锁定?

时间:2009-05-21 11:12:59

标签: python google-app-engine open-source lock-in

是否有任何指导原则可以编写Google App Engine Python代码,这些代码在其他平台上没有Google的基础架构时可以使用?

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

编辑:

澄清一下,问题的确是:

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

9 个答案:

答案 0 :(得分:33)

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

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

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

答案 1 :(得分:7)

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

django已被修补并移植到Appengine patch项目中工作,并且是最常用的附加装置FW。

您可能希望逐步介绍此running a django app on App engine

就运行应用引擎应用程序的并行基础架构而言,它仍然遥远。 App Engine本身并没有像人们所认为的那样流行,谷歌也想要它。另外,在内置的WebApp框架上开发比在django上开发更难。

在未来几年内,它几乎不可能看到运行应用程序引擎应用程序的并行基础架构。相反,它可能会看到django和其他流行的框架在app引擎上开箱即用,目前正在进行的项目中正在开展工作。

答案 2 :(得分:3)

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

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:1)

代码应该主要是可移植的(它们可以很好地指示哪些模块不能在AppEngine上使用,哪些AppEngine特定代码对应于哪些禁用模块),但AppEngine的重点是获取访问权限谷歌的基础设施。如果您不打算使用他们的基础设施,那么将代码写入AppEngine限制并没有多大意义。

答案 5 :(得分:1)

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

答案 6 :(得分:0)

我最近通过使用WHIFF资源很容易地从vanilla Unix反向迁移到app引擎。基本上将依赖于平台的任何平台配置为资源,然后交换/替换不同配置上的资源。

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

另见

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

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

答案 7 :(得分:0)

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

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

(免责声明:我参与该项目)

答案 8 :(得分:0)

结帐typhoonae。它处于测试阶段,但非常实用 - 我们将其中一个应用程序移动到运行此堆栈的内部服务器。