适用于Google App Engine的Flask vs webapp2

Ant*_*eev 115 python google-app-engine flask webapp2

我正在开始新的Google App Engine应用程序,目前正在考虑两个框架:Flaskwebapp2.我对我以前的App Engine应用程序使用的内置webapp框架非常满意,所以我认为webapp2会更好,我也不会有任何问题.

然而,Flask有很多好的评论,我真的很喜欢它的方法以及我在文档中到目前为止所读到的所有内容,我想尝试一下.但我有点担心我可以面对Flask的限制.

所以,问题是 - 你知道Flask可以带入Google App Engine应用程序的任何问题,性能问题,限制(例如路由系统,内置授权机制等)吗?"问题"是指我无法在几行代码(或任何合理数量的代码和工作)或完全不可能的事情中解决的问题.

作为一个后续问题:你认为Flask中是否有任何杀手级功能可以让我大吃一惊并让我使用它,尽管我可以面对任何问题?

mor*_*aes 138

免责声明:我是tipfy和webapp2的作者.

坚持使用webapp(或其自然发展,webapp2)的一大优势是,您无需为您选择的框架为现有SDK处理程序创建自己的版本.

例如,deferred使用webapp处理程序.要在纯Flask视图中使用它,使用werkzeug.Request和werkzeug.Response,你需要为它实现延迟(就像我在这里为tipfy 做的那样).

对于其他处理程序也是如此:blobstore(Werkzeug仍然不支持范围请求,因此即使您创建自己的处理程序,您也需要使用WebOb - 请参阅tipfy.appengine.blobstore),mail,XMPP等,或将来包含在SDK中的其他人.

对于使用App Engine创建的库也是如此,例如ProtoRPC,它基于webapp并且需要端口或适配器来与其他框架一起工作,如果你不想混合webapp和你的框架 -同一个应用程序中的选择处理程序.

因此,即使您选择了不同的框架,您也将结束a)在某些特殊情况下使用webapp或b)必须为特定SDK处理程序或功能创建和维护您的版本(如果您将使用它们).

我更喜欢Werkzeug而不是WebOb,但是经过一年多的移植和维护版本的SDK处理程序本身可以使用tipfy,我意识到这是一个失败的原因 - 从长远来看支持GAE,最好是保持接近Web应用程序/的WebOb.它使得SDK库的支持变得轻而易举,维护变得更加容易,它更具有前瞻性,因为新的库和SDK功能将开箱即用,并且大型社区的优势在于使用相同的App Engine工具.

这里总结一个特定的webapp2防御.再加上那些webapp2可以在App Engine之外使用,并且易于定制,看起来像流行的微框架,你有一套很好的理由去实现它.此外,webapp2有很大的机会被包含在未来的SDK版本中(这是非官方的,不要引用我:-),这将推动它向前推进并带来新的开发人员和贡献.

那就是说,我是Werkzeug和Pocoo家伙的忠实粉丝,并从Flask和其他人那里借了很多东西(web.py,Tornado),但是 - 而且,你知道,我有偏见 - 上面的webapp2好处应该被考虑在内.

  • 请注意,虽然这是传统上接受的答案,但webapp2开发已经死了.我会说Flask是要走的路. (15认同)
  • 谢谢,@ moraes!足够坚固.我认为像blobstore,mail(以及可能是ProtoRPC)这样的东西对于那个项目来说是非常重要的部分,我想尽可能顺利地使用它们.另外,我认为如果你能轻松避免它,混合使用不同的框架并不是最好的选择.此外,尽管我对Flask表示同情,但我对webapp2印象非常深刻,并且我的手很想要尝试一下.感谢您的回答和webapp2! (10认同)
  • @moraes:这个答案现在已经过时了吗?我可以看到GAE SDK支持Flask.webapp2仍然是更好的选择吗? (4认同)
  • @Sundar它可以在任何符合WSGI的Web服务器上运行.对于Apache,有http://code.google.com/p/modwsgi/和其他人. (3认同)

agf*_*agf 13

您的问题非常广泛,但在Google App Engine上使用Flask似乎没有大问题.

此邮件列表线程链接到多个模板:

http://flask.pocoo.org/mailinglist/archive/2011/3/27/google-app-engine/#4f95bab1627a24922c60ad1d0a0a8e44

这是一个特定于Flask/App Engine组合的教程:

http://www.franciscosouza.com/2010/08/flying-with-flask-on-google-app-engine/

此外,请参阅App Engine - 难以访问Twitter数据 - Flask,Flask消息闪存在重定向中失败,以及如何使用Google App Engine管理第三方Python库?(virtualenv?pip?)解决了人们对Flask和Google App Engine的问题.

  • @James - 不同意.我不会问你猜测,假设或主观感受.我问你的经历,即你自信地知道的*事实*.不是过时的帖子,也不是其他人在大量定制时遇到的问题,只是事实.不同意 - 好吧,只是标记它. (8认同)
  • 谢谢,@ agf.我以前见过大部分帖子,但我觉得我对个人经历更感兴趣.我不认为这个问题太宽泛了,因为我对全面的讨论或有关问题的详细信息不感兴趣,只要指出我这很难或不可能实现. (7认同)
  • @Anton,请求主观的个人经验非常接近[问题不要问]的SO指南(http://stackoverflow.com/faq#dontask). (2认同)