将Django应用程序迁移到Google App Engine?

时间:2009-07-13 10:40:05

标签: python django google-app-engine

我正在开发一个Web应用程序,并考虑使用Django,Google App Engine和其他几个选项。我想知道如果我开发一个完整的Django应用程序,假设它在专用服务器上运行,然后又想将其迁移到Google App Engine,那将会产生什么样的“惩罚”。

我对Google的数据存储有一个基本的了解,所以请假设我将为我的“独立”Django应用程序而不是关系数据库选择基于列的数据库,这样架构可以保持大部分相同而不会是一个主要因素。

另外,请假设我的应用程序没有维护大量数据,因此不需要迁移数十GB。我主要对代码和软件架构的影响感兴趣。

由于

4 个答案:

答案 0 :(得分:8)

大多数(全部?)的Django都可以在GAE中使用,所以你的主要任务是避免依赖于任何来自Django或GA标准库的Python标准库。

你已经确定了明显的区别,即数据库,所以我假设你是最重要的。另一个区别是与Google帐户的搭配,因此如果您愿意,可以通过app.yaml文件而不是代码执行相当数量的访问控制。但是,您不必使用其中任何一项,因此如果您在切换到GAE时未设想切换到Google帐户,则没问题。

我认为标准库中的差异大部分可以从GAE没有I / O和没有C加速库的事实中推断出来,除非明确说明,而且我迄今为止的经验是我预计会在那里的事情,一直在那里。我不知道Django并没有在GAE上使用它(除了模板),所以我不能对此发表评论。

我个人可能不会以LAMP(P = Django)为目标,以便稍后迁移到GAE。我会一起开发,并尽可能确保差异保持在最顶层(配置)和最底层(数据模型)。 GAE版本不一定非常完美,只要您知道如何在需要时将其完美化。

不能保证这比写入和移植更快,但我的猜测通常是这样。发现任何差异的最简单方法是运行代码,而不是依赖于GAE文档中没有遗漏任何内容,因此您可能会保存一些需要删除的错误。 Python SDK与真正的App Engine相当接近,因此您的大部分时间都可以在本地运行。

当然,如果你最终决定不进行移植,那么你已经做了不必要的工作,所以你必须考虑发生这种情况的可能性,以及你是否认为GAE开发是浪费你的时间,如果它是不需要。

答案 1 :(得分:2)

基本上,如果您使用它们,您将更改数据模型基类和一些API(PIL,urllib2等)。

如果你的目标是app-engine,我会使用app引擎助手http://code.google.com/appengine/articles/appengine_helper_for_django.html。它可以使用基于文件的数据库在您的服务器上运行它,然后将其推送到app-engine而不进行任何更改。

答案 2 :(得分:2)

听起来您已经意识到构建/迁移应用程序的主要限制 - AppEngine不支持Django的ORM。

请记住,这不仅会影响您自己编写的代码 - 它还会限制您使用大量现有Django代码的能力。这包括其他应用程序(例如内置管理员和身份验证应用程序)和基于ORM的功能,例如generic views

答案 3 :(得分:1)

您可以在自己的服务器上执行一些不能在App Engine上执行的操作,例如上载文件。在App Engine上,您必须上传它并存储可能导致一些问题的数据存储区。

除此之外,演示文稿部分应该没问题。在您自己的专用服务器上有许多其他更好的东西,但我认为最终很多这些东西将在App Engine中