【问题标题】:Feedback on using Google App Engine? [closed]关于使用 Google App Engine 的反馈? [关闭]
【发布时间】:2010-09-11 17:32:36
【问题描述】:

希望做一个非常小,快速的'n肮脏的侧面项目。我喜欢 Google App Engine 在 Python 上运行并内置 Django 的事实 - 让我有理由尝试该平台......但我的问题是:

除了玩具问题之外,有没有人使用过应用引擎?我看到了一些很好的示例应用程序,所以我认为这对于真正的交易来说已经足够好了,但想获得一些反馈。

任何其他成功/失败说明都会很棒。

【问题讨论】:

  • 应该是社区维基

标签: python django google-app-engine


【解决方案1】:

我已经为我的小型地震监测应用程序尝试了应用引擎 http://quakewatch.appspot.com/

我的目的是看看应用引擎的能力,所以这里是要点:

  1. 默认情况下 Django 没有它,它有自己的 web 框架,它是 pythonic 有 URL 调度器,如 Django,它使用 Django 模板 所以如果你有 Django exp。你会发现它很容易使用
  2. 您不能在服务器上执行任何长时间运行的进程,您所做的是回复请求并且应该很快,否则 appengine 会杀死它 因此,如果您的应用需要大量后端处理,那么 appengine 并不是最好的方法 否则您将不得不在自己的服务器上进行处理
  3. 我的 quakewatch 应用程序具有订阅功能,这意味着我必须在最新地震发生时通过电子邮件发送它们,但我无法在应用程序引擎中运行后台进程来监控新地震 这里的解决方案是使用第三方服务,如 pingablity.com,它可以连接到您的一个页面并执行订阅电子邮件 但在这里你也必须注意不要在这里花太多时间 或将任务分成几部分
  4. 它提供了类似 Django 的建模功能,但后端完全不同,但对于新项目来说应该没关系。

但总的来说,我认为它非常适合创建不需要大量后台处理的应用程序。

编辑: 现在task queues可用于运行批处理或计划任务

编辑: 在 GAE 上工作/创建一个真正的应用程序一年之后,现在我的意见是,除非您正在制作一个需要扩展到数百万用户的应用程序,否则不要使用 GAE。由于分布式特性,在 GAE 中维护和执行琐碎的任务是一件令人头疼的事情,为了避免超出期限的错误,计算实体或执行复杂的查询需要复杂的代码,因此小型复杂应用程序应该坚持使用 LAMP。

编辑: 模型应该考虑到您将来希望拥有的所有交易而专门设计,因为只有同一实体组中的实体才能在交易中使用,这使得更新两个不同组的过程成为一场噩梦,例如除非他们在同一个实体组中,否则在交易中从 user1 到 user2 转账是不可能的,但是使他们成为同一个实体组可能不是最好的频繁更新目的.... 阅读此http://blog.notdot.net/2009/9/Distributed-Transactions-on-App-Engine

【讨论】:

  • 现在可以在GAE上运行批处理
  • 在 App-Engine 文档中也可以查看新的 Task Queue Python API。
  • 大部分信息已经过时 - 截至 2009 年 7 月 17 日,Django 0.96 现已内置到 GAE 中。
  • Djanjo 1.0.x 现在也包含在 GAE 中。你可以选择你想要的 Django 版本。
  • 只是另一个更新,Django 1.1 现在可用于 GAE 以及过去的版本。
【解决方案2】:

我正在使用 GAE 托管几个高流量的应用程序。就像 50-100 req/sec 的顺序一样。太棒了,我怎么推荐都不够。

我之前的 Web 开发经验是使用 Ruby(Rails/Merb)。学习 Python 很容易。我没有搞乱 Django 或 Pylons 或任何其他框架,只是从 GAE 示例开始,并从提供的基本 webapp 库中构建了我需要的东西。

如果您习惯了 SQL 的灵活性,那么数据存储区可能需要一些时间来适应。没有什么太伤人的!最大的调整是远离 JOIN。你必须摒弃标准化是至关重要的观念。

【讨论】:

    【解决方案3】:

    我发现使用 Google App Engine 的一个令人信服的原因是它与您所在域的 Google Apps 集成。从本质上讲,它允许您创建仅限于您域的(受控)登录的自定义、托管 Web 应用程序。

    我对这段代码的大部分经验是构建一个简单的时间/任务跟踪应用程序。模板引擎很简单,但使多页应用程序非常容易上手。登录/用户感知 api 同样有用。我能够制作公共页面/私人页面范例而没有太多问题。 (用户登录后可以查看私人页面。匿名用户只显示公共页面。)

    我刚进入项目的数据存储部分,就被拉去“真正的工作”。

    我能够在很短的时间内完成很多(还没有完成)。由于我以前从未使用过 Python,这特别令人愉快(既因为它对我来说是一门新语言,也因为尽管使用了新语言,但开发仍然很快)。我遇到的事情很少,这让我相信我无法完成我的任务。相反,我对功能和特性有相当积极的印象。

    这是我的经验。也许它只是一个未完成的玩具项目,但它确实代表了对该平台的知情试验,我希望这会有所帮助。

    【讨论】:

    • 与我的情况几乎一模一样——除了“真正的工作”之外,我仍然需要做一些事情,并在最后发挥作用。
    • 这里也一样。此外,最大的优点是开发环境的安装很容易(您在一分钟内编码)。部署也是如此。
    【解决方案4】:

    “App Engine 运行 Django”的想法有点误导。 App Engine 替换了整个 Django 模型层,因此请准备好花一些时间来适应 App Engine 的数据存储区,这需要不同的建模和思考数据的方式。

    【讨论】:

    • 好点 - 似乎默认情况下它会占用 Django 的模板,但不一定会占用其余部分。
    【解决方案5】:

    我使用 GAE 构建 http://www.muspy.com

    这不仅仅是一个玩具项目,但也不过分复杂。我仍然依赖 Google 解决的一些问题,但总体而言,开发网站是一次愉快的经历。

    如果您不想处理托管问题、服务器管理等问题,我绝对可以推荐它。特别是如果您已经了解 Python 和 Django。

    【讨论】:

      【解决方案6】:

      我认为 App Engine 目前非常适合小型项目。不必担心托管有很多话要说。该 API 还会将您推向构建可扩展应用程序的方向,这是一种很好的做法。

      • app-engine-patch 是 Django 和 App Engine 之间的一个很好的层,可以使用 auth 应用等。
      • Google 已承诺在 2008 年底之前推出 SLA 和定价模式。
      • 请求必须在 10 秒内完成,对 Web 服务的子请求需要在 5 秒内完成。这迫使您设计一个快速、轻量级的应用程序,将繁重的处理工作转移到其他平台(例如托管服务或 EC2 实例)。
      • 更多语言即将推出!谷歌不会说是哪个:-)。接下来我的钱会花在 Java 上。

      【讨论】:

      • 自 2009 年 2 月起,上述许多限制已被放宽。
      • 如果有人可以编辑这个答案,那么反映 Java 确实是下一个可用的语言会很好。
      • @jhs 你的评论做得很好!
      • 现在也支持 Go 语言了!
      【解决方案7】:

      这个问题已经完全回答了。哪个好。 但有一件事也许值得一提。 google 应用引擎有一个用于 eclipse ide 的插件,使用起来很愉快。

      如果您已经使用 eclipse 进行开发,您会为此感到非常高兴。

      要在谷歌应用引擎的网站上部署,我需要做的就是点击一个小按钮 - 带有飞机标志 - 超级。

      【讨论】:

        【解决方案8】:

        看看sql game,它非常稳定,实际上一度推动了流量限制,因此被谷歌限制了。除了将您的应用托管在其他人完全控制的服务器上之外,我只看到了有关 App Engine 的好消息。

        【讨论】:

        • sql 游戏已从 Google App Engine 移至私有服务器。
        【解决方案9】:

        我使用 GAE 构建了一个简单的应用程序,它接受一些参数、格式和发送电子邮件。这是非常简单和快速的。我还对 GAE 数据存储和内存缓存服务 (http://dbaspects.blogspot.com/2010/01/memcache-vs-datastore-on-google-app.html) 进行了一些性能基准测试。它不是那么快。我的观点是,GAE 是一个执行某些方法的严肃平台。我认为它将演变为真正可扩展的平台,根本不允许不良做法。

        【讨论】:

          【解决方案10】:

          我将 GAE 用于我的 Flash 游戏网站 Bearded Games。 GAE 是一个很棒的平台。我使用的 Django 模板比过去的 PHP 简单得多。它带有一个很棒的管理面板,并为您提供非常好的日志。数据存储与 MySQL 等数据库不同,但使用起来要容易得多。构建网站简单明了,他们在网站上提供了很多有用的建议。

          【讨论】:

            【解决方案11】:

            我使用 GAE 和 Django 构建了一个 Facebook 应用程序。我使用http://code.google.com/p/app-engine-patch 作为起点,因为它支持 Django 1.1。我没有尝试使用任何 manage.py 命令,因为我认为它们不起作用,但我什至没有研究它。该应用程序具有三个模型,并且还使用了 pyfacebook,但这就是复杂程度。我正在构建一个更复杂的应用程序,我开始在 http://brianyamabe.com 上写博客。

            【讨论】:

            • 我开始使用 manage.py 来运行服务器并运行一些单元测试。运行服务器工作正常,但由于我的应用程序作为 Facebook 应用程序运行,它并不是那么有用(我需要一个 Facebook 引用的托管服务器)。单元测试也有效,它甚至可以与固定装置一起工作。但是,我无法让引用其他模型的固定装置工作。我还没有弄清楚是我的fixture有问题还是app-engine-patch有问题。
            猜你喜欢
            • 2011-02-10
            • 2013-03-30
            • 1970-01-01
            • 2017-10-12
            • 2013-04-29
            • 2012-04-14
            • 2012-12-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多