【问题标题】:Migrating Django Application to Google App Engine?将 Django 应用程序迁移到 Google App Engine?
【发布时间】:2010-11-10 06:21:29
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: python django google-app-engine


    【解决方案1】:

    大多数(全部?)Django 都在 GAE 中可用,因此您的主要任务是避免将您的设计建立在依赖于 Django 或 GAE 中不可用的 Python 标准库的任何内容上。

    您已经确定了明显的区别,那就是数据库,所以我假设您已经掌握了这一点。另一个区别是与 Google 帐户的关联,因此,如果您愿意,您可以通过 app.yaml 文件而不是代码进行相当多的访问控制。不过,您不必使用其中任何一个,因此,如果您不打算在切换到 GAE 时切换到 Google 帐户,也没问题。

    我认为标准库中的差异主要可以从以下事实中推断出来,去过。我不了解 Django,也没有在 GAE 上使用过它(除了模板),所以我无法对此发表评论。

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        【解决方案4】:

        有些事情您无法在 App Engine 上执行,但您可以在自己的服务器上执行,例如上传文件。在 App Engine 上,您必须将其上传并存储数据存储区,这可能会导致一些问题。

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

        【讨论】:

          猜你喜欢
          • 2011-08-16
          • 2012-03-04
          • 1970-01-01
          • 2013-03-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多