【问题标题】:Django on Google App EngineGoogle App Engine 上的 Django
【发布时间】:2010-11-03 22:32:43
【问题描述】:

在 App Engine 上运行 Django 应用程序有多痛苦?此外,Datastore 是否可以与 Django 一起使用?

【问题讨论】:

    标签: django google-app-engine


    【解决方案1】:

    我花了一些时间试图回答同样的问题...在我看来,转移到 GAE 最困难的是 django 的模型...从某种意义上说,它们需要进行各种修改又重新思考,主要是因为GAE的后端不是标准的关系型DB,而是google的BigTable。我在这里找到了一个很好的介绍:

    http://www.youtube.com/watch?v=rRCx9e38yr8

    无论如何,值得下载其中一个“补丁”并尝试一下!

    对我来说,最好的解决方案是“app-engine-patch”。我下载了示例项目,它立即工作! (请注意,您需要单独安装 GAE 的 SDK)对我来说,一个杀手级功能是 django-admin 和许多其他经典 django 功能也已被移植!!!

    http://code.google.com/p/app-engine-patch/

    documentation 在我看来仍然很小,但足以让您继续前进。不过,它会帮助您浏览 GAE 官方文档!

    【讨论】:

    • 我发现应用引擎补丁是一个 PIA。它总是寻找一些奇怪的 python 模块,经常返回奇怪的错误,并且功能与 django runserver 完全不同。
    • 这个补丁比 Django-Nonrel 更好吗?
    【解决方案2】:

    只需 Yesterday (depending on your time zone), Google released a new SDK 用于 Appengine 上的 Python,它支持开箱即用的 django 1.0。

    【讨论】:

    • 感谢指点!我对任务队列也很兴奋!
    • 我听说它只是 Django 的一个子集(例如模板),而不是整个框架。 Woukld 很欣赏一些澄清。我同意其他海报:Django-norel 是 PiTA!
    【解决方案3】:

    您需要使用django-nonrel (source)。

    你仍然会发现很多问题:

    • 不支持Many2Many关系
    • 虚假连接增加查询次数
    • App Engine 不允许任何带有套接字或 C 依赖项的 python 库(sentry、lxml...)

    您可以尝试提前访问CloudSQL

    否则你不限制使用App Engine,你可以考虑使用:

    使用 pip 等支持需求文件更便宜、控制更多。

    【讨论】:

      【解决方案4】:

      31.01.2012, Google released App Engine 1.6.2 支持开箱即用的 Django。

      【讨论】:

      • 您是否必须将它与 CloudSQL 一起使用,或者您也可以与 HRD Datasotre 一起使用
      【解决方案5】:

      App Engine 包含开箱即用的 Django 0.96 版,但它相当残缺。

      App Engine Helper 和 app-engine-patch 应该在一定程度上解决了这个问题,但我自己也没有尝试过。

      http://code.google.com/appengine/articles/appengine_helper_for_django.html http://code.google.com/appengine/articles/app-engine-patch.html

      【讨论】:

        【解决方案6】:

        痛苦的程度取决于您想要重用多少现有代码。不幸的是,由于 Datastore 不支持 SQL,您通常不能只使用任何 django-pluggable 应用程序并在您的 GAE 项目中使用它。

        App-engine-patch http://code.google.com/p/app-engine-patch/ 在将标准应用程序(站点、内容类型、平面页面)引入 GAE 方面似乎领先于其他 django 助手。我在几个 gae 项目中使用了 app-engine-patch,一旦你了解了如何将 django-sql 模型移植到 django-gae 模型并将 sql 转换为数据存储查询,事情就可以很快完成 - 但总有一个学习曲线。

        appengine-helper 试图通过提供模型来弥合数据存储区的差距,这样您就不必更改模型超类,但我发现您最终不得不更改多对多关系和任何 sql,所以优势最终变得最小。 ae-patch 有一个尝试提供 ae-datastore 后端的路线图,但它可能暂时不会发生。

        【讨论】:

          【解决方案7】:

          Google 现已推出 Cloud SQL 存储。那实际上是云中的 MySQL 5.5。 IMO 这是将您的 Django 应用程序迁移到云中的一种非常好的方法。免费试用期至 2013 年 6 月 1 日。

          如果您需要一些技巧来为 Appengine 和 Cloud SQL 设置您的 Django 项目,我已经写了一个tutorial for that

          【讨论】:

            猜你喜欢
            • 2012-08-15
            • 2010-11-28
            • 1970-01-01
            • 1970-01-01
            • 2020-03-09
            • 2012-05-08
            • 2013-04-19
            • 1970-01-01
            • 2011-04-29
            相关资源
            最近更新 更多