在研究Google App Engine(GAE)时,很明显使用Django在GAE上用Python开发非常受欢迎.我一直在网上淘到找到的成本和使用Django的好处的信息,找出为什么它是如此受欢迎.虽然我已经能够找到关于如何在GAE 上运行Django以及各种方法的各种来源,但我没有找到任何比较分析为什么 Django更适合使用Google提供的webapp框架.
为了清楚起见,很明显为什么在DjE上使用Django对于Django(大多数Python Web开发人员,毫无疑问)现有技能的开发人员或Django中的现有代码(使用GAE更多是移植练习)非常有用.然而,我的团队正在评估GAE用于全新项目,而我们现有的经验是TurboGears,而不是Django.
当BigTable库替换了Django的ORM时,很难确定Django为什么对开发团队有益,会话和身份验证必然会改变,而Django的模板(如果需要)可以在不使用整个Django堆栈的情况下使用.
最后,显然使用Django确实具有提供"退出策略"的优势,如果我们后来想要远离GAE并且需要一个平台来针对外流.
我非常感谢帮助指出为什么使用Django比在GAE上使用webapp更好.我对Django也缺乏经验,因此对GAE的小功能和/或便利性的详细阐述对我来说也很有价值.
如果您确定GAE适合您,那么Django可能不适合您.这两种技术的优势并不是很好 - 你在GAE上完全失去了很多Django的精彩内容,如果你使用它,你编写的代码实际上并不适合bigtable和GAE的工作方式.
关于GAE的事情是它通过强制您编写可以从头开始轻松扩展的代码来获得极大的可伸缩性.你不能做一些规模很小的事情(当然,你仍然可以编写糟糕的缩放代码,但你可以避免一些陷阱).如果你使用专为不同环境设计的Django之类的东西,那么权衡就是你真的最终围绕框架进行编码.
如果您发现自己因任何原因离开了GAE,那么投资基础设施就会出现问题.对bigtable进行编码意味着迁移到不同的体系结构将更加困难(尽管apache项目正在努力使用Hadoop项目的HBase组件为您解决这个问题).从GAE过渡仍然需要做很多工作.
使用GAE背后的驱动力是什么,除了作为谷歌产品,还有一个很酷的流行语?是否有理由使用mediatemple的产品进行缩放不太适合您?您确定GAE扩展的方式适合您的应用吗?如果您希望达到性能领域,那么成本与专用服务器相比如何?与更传统的负载平衡服务器设置相比,您能否使用GAE提供的工具很好地解决您的问题?
所有这些都说,除非你绝对肯定需要GAE提供的边界 - 荒谬的扩展,否则我个人建议不要让这个特定的服务结构成为你选择的框架.我喜欢Django,所以我会说你应该使用它,但不是GAE.
编辑(2010年6月): 作为此评论的更新后期:Google已经宣布了GAE的类似SQL的功能,这些功能不是免费的,但可以让您轻松地执行诸如运行SQL样式命令以生成数据报告之类的功能.
此外,GAE查询语言即将发生变化,这将允许以更容易的方式进行复杂查询.查看Google I/O 2010中的视频.
此外,在2010年夏季代码项目期间正在开展工作,该项目应该为django核心带来无sql支持,并且通过扩展,使得与GAE的合作变得更加容易.
GAE作为托管平台正变得越来越有吸引力.
编辑(2011年8月):
谷歌通过改变定价结构,大大提高了平台大多数用户的成本.锁定问题已经变得更好(如果您的应用程序足够大,您可以部署apache备选方案),但对于大多数应用程序,运行服务器或VPS部署更便宜.
很少有人真的有bigdata问题."哦,我的创业公司可能有一天会扩展"并不是一个大数据问题.立即构建内容并使用标准工具将其推出门外.
我们在appengine实例上使用django,主要是在我们必须向用户提供实际网站时.它有一个很棒的模板引擎,url路由和内置的所有请求/响应/错误处理.所以即使我们不能使用魔法orm/admin的东西,它也有很多用处.
对于api服务,我们在上面构建了一些非常简单的东西webob
.它更轻巧,因为它不需要django提供的所有东西,因此在某些情况下会更快一些.
我在GAE上做了很多项目.有些在django,有些在他们的正常框架中.
对于小东西,我通常使用他们的常规框架来简化和快速.如http : //stdicon.com,http://yaml-online-parser.appspot.com/或http://text-twist.appspot.com/.
对于大型事物,我使用django来利用所有漂亮的中间件和插件.喜欢http://metaward.com.
基本上我的试金石是否需要超过2周的时间来编写并成为真正的软件项目?如果是这样,请使用django作为插件.
它有额外的好处,如果你的项目非常适合BigTable,那么你很快就会移除(就像我做的那样,BigTable很慢还是我笨蛋?)
我认为所有这些答案都有点过时了.
现在你可以使用了 Google Cloud SQL
Django是一个流行的第三方Python Web框架.与Google Cloud SQL结合使用时,App Engine上运行的应用程序可以完全支持其所有功能.支持在Django中使用Google Cloud SQL由自定义Django数据库后端提供,该后端包装了Django的MySQL后端.
https://cloud.google.com/python/django/appengine
还有一个新消息是,BETA支持PostgreSQL