126

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

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

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

4

11 回答 11

63

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

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

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

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

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

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

编辑:模型应该考虑到您将来希望进行的所有交易而专门设计,因为只有同一实体组中的实体才能在交易中使用,并且它使更新两个不同组的过程成为一场噩梦,例如从 user1 转移资金到 user2除非它们在同一个实体组中,否则在事务中是不可能的,但是使它们成为同一个实体组可能不是最适合频繁更新的目的....阅读此http://blog.notdot.net/2009/9/Distributed-Transactions-应用引擎

于 2008-09-21T04:52:12.543 回答
36

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

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

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

于 2009-02-19T18:08:15.153 回答
23

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

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

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

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

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

于 2008-09-21T05:12:25.257 回答
12

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

于 2008-09-21T04:09:00.323 回答
7

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

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

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

于 2008-09-23T02:37:29.683 回答
7

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

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

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

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

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

于 2010-03-17T12:52:04.343 回答
4

看看sql 游戏,它非常稳定,实际上在某个时间点推动了流量限制,以至于被谷歌限制了。除了将您的应用程序托管在其他人完全控制的服务器上之外,我只看到了有关 App Engine 的好消息。

于 2008-09-21T03:47:36.787 回答
4

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

于 2010-01-28T15:20:56.617 回答
4

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

于 2010-02-18T21:58:33.780 回答
3

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

于 2009-09-10T18:21:41.670 回答