当前位置:  开发笔记 > 编程语言 > 正文

为什么在Google App Engine上使用Django?

如何解决《为什么在GoogleAppEngine上使用Django?》经验,为你挑选了4个好方法。

在研究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的小功能和/或便利性的详细阐述对我来说也很有价值.



1> Paul McMilla..:

如果您确定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问题."哦,我的创业公司可能有一天会扩展"并不是一个大数据问题.立即构建内容并使用标准工具将其推出门外.


tbradshaw,*不要忘记考虑在数据集上运行临时报告的频率.我参与了一个不断增长的社交应用程序,GAE正在变得......我不会说噩梦,但从我们的数据中获取知识是非常耗费资源的.在Google清除旧日志和扫描所有数据所需的极端长度之间,它使报告方式比SQL db更昂贵.这是我开始时没有考虑的成本.其次,如果你确实在增长并开始赚钱,那么你在备份方面失去的控制权就是一个因素.
小心不要过分捏钱.免费很好,但这项服务很快就会花费真金白银.如果您在"免费"服务水平上滑行,请将其托管在您已经付费的其他服务器/托管服务上.如果您正在进入非免费服务级别,那么您可以轻松扩展的VPS的20美元/月是噪音,直至成本.
对于锁定问题,请查看AppScale,这是一个Google App Engine克隆版.自从GAE首次出现以来,我们一直在使用该平台,并且有许多用户用于生产python和Java应用程序.您可以直接访问其运行的计算机,以便您可以更好地控制基础结构.https://github.com/AppScale/appscale.git

2> Koen Bok..:

我们在appengine实例上使用django,主要是在我们必须向用户提供实际网站时.它有一个很棒的模板引擎,url路由和内置的所有请求/响应/错误处理.所以即使我们不能使用魔法orm/admin的东西,它也有很多用处.

对于api服务,我们在上面构建了一些非常简单的东西webob.它更轻巧,因为它不需要django提供的所有东西,因此在某些情况下会更快一些.


我认为这是我正在寻找的答案!Django在很大程度上是webapp的冗余,但是他们以更灵活,更健壮的方式共享Django的功能.看起来这肯定是一个"在边际上"的决定,但我认为所有其他建议,加上你的建议,都会产生令人信服的答案.谢谢.

3> Paul Tarjan..:

我在GAE上做了很多项目.有些在django,有些在他们的正常框架中.

对于小东西,我通常使用他们的常规框架来简化和快速.如http : //stdicon.com,http://yaml-online-parser.appspot.com/或http://text-twist.appspot.com/.

对于大型事物,我使用django来利用所有漂亮的中间件和插件.喜欢http://metaward.com.

基本上我的试金石是否需要超过2周的时间来编写并成为真正的软件项目?如果是这样,请使用django作为插件.

它有额外的好处,如果你的项目非常适合BigTable,那么你很快就会移除(就像我做的那样,BigTable很慢还是我笨蛋?)


基本上任何没有models.py的插件都可以正常工作.如果他们有models.py,你可以将1对1转换为bigtable,如果你愿意,仍然可以使用它.我使用的是django_annoying,django_debug_toolbar,以及contrib部分csrf,humanize,当然还有admin.

4> andilabs..:

我认为所有这些答案都有点过时了.

现在你可以使用了 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

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有