代码之家  ›  专栏  ›  技术社区  ›  Roee Adler

将django应用程序迁移到Google应用程序引擎?

  •  9
  • Roee Adler  · 技术社区  · 17 年前

    我正在开发一个Web应用程序,并考虑Django、Google应用程序引擎和其他几个选项。我想知道,如果我开发一个完整的django应用程序(假设它在专用服务器上运行),然后希望将其迁移到Google应用程序引擎,我会受到什么样的“惩罚”。

    我对谷歌的数据存储有一个基本的了解,所以请假设我将为我的“独立”django应用程序选择一个基于列的数据库,而不是一个关系数据库,这样模式就基本上保持不变,不会成为主要因素。

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

    谢谢

    4 回复  |  直到 14 年前
        1
  •  8
  •   Steve Jessop    17 年前

    大多数(全部?)因为django在GAE中可用,所以您的主要任务是避免将您的设计建立在对django或Python标准库(GAE上不可用)的任何依赖之上。

    您已经识别出了明显的区别,即数据库,所以我假设您已经掌握了这一点。另一个区别是与Google帐户的连接,因此,如果你愿意,你可以通过app.yaml文件而不是代码来进行相当数量的访问控制。不过,你不必使用任何一个,所以如果你不想在切换到GAE时切换到Google帐户,没问题。

    我认为,标准库之间的差异主要是由于GAE没有I/O和C加速库,除非有明确说明,而我迄今为止的经验是,我期望的事情已经发生了。我不认识Django,也没有在GAE上使用过(除了模板),所以我不能对此发表评论。

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

    这并不能保证比写和移植更快,但我猜这通常是。发现任何差异的最简单方法是运行代码,而不是依赖于GAE文档中没有遗漏任何内容,因此您可能会保存一些需要取消勾选的错误。python-sdk是一个与真实应用程序引擎相当好的近似值,因此大多数时候您的所有或大部分测试都可以在本地运行。

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

        2
  •  2
  •   Paul Tarjan    17 年前

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

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

        3
  •  2
  •   Wladimir Palant    14 年前

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

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

        4
  •  1
  •   AutomatedTester    17 年前

    在应用引擎上有一些你不能做的事情,你可以在自己的服务器上做,比如上传文件。在应用程序引擎上,你需要上传它并存储数据存储,这会导致一些问题。

    除此之外,从演示部分看应该可以。在你自己的专用服务器上还有很多其他更好的小东西,但我认为最终这些东西会在应用程序引擎中出现。