烧瓶VS webapp2的谷歌应用程序引擎烧瓶VS webapp2的谷歌应用程序引擎(Flask v

2019-05-13 09:16发布

我开始新的谷歌App Engine应用程序和目前正在考虑两种框架: 瓶和webapp2的 。 我相当满意,内置的,我已经用了我以前的App Engine应用程序的web应用框架,所以我觉得webapp2的会更好,我不会有任何问题。

然而,也有很多的瓶的评价不错,我很喜欢它的方式和所有我的文档中迄今读到的事情,我想尝试一下。 但我有点担心,我能面对打倒瓶的道路限制。

所以,问题是- 你知道的任何问题,性能问题,限制(例如路由系统,内置授权机制,等等),瓶可能带来到谷歌App Engine应用程序? 所谓“问题”,我的意思是什么,我不能在代码(或代码和努力,任何合理的量)或东西是完全不可能的几行解决。

而作为一个后续问题:有没有什么杀手级的功能在瓶,你认为可以吹我的脑海里,让我用它尽管我可以面对任何问题?

Answer 1:

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

Web应用程序使用(或它的自然演进,而webapp2)坚持的一大优势是,你不必创建自己的版本对现有SDK处理您你选择的框架。

例如, 推迟使用web应用程序的处理程序。 要在纯瓶视图中使用它,使用werkzeug.Request和werkzeug.Response,你需要实现推迟了它(像我一样在这里为tipfy)。

同样的情况对于其他处理程序:Blob存储(WERKZEUG仍然不支持范围请求,因此,即使你创建你自己的处理程序,您需要使用的WebOb -见tipfy.appengine.blobstore )等,邮件,XMPP和,或者其他的,包括在未来的SDK。

而同样的情况与App Engine的想法,就像创建库ProtoRPC的是基于web应用程序,并需要一个端口或适配器与其他框架的工作,如果你不想混web应用和你的框架-OF-,选择处理程序在同一个应用程序。

所以,即使你选择不同的框架,你会在一些特殊情况下使用Web应用程序结束)或b)具有创建和维护您的版本具体SDK处理程序或功能,如果你会使用它们。

我更喜欢在WERKZEUG的WebOb,但经过一年多的移植,并与本地tipfy工作SDK处理程序的维护版本,我意识到这是一个失败的事业 - 为支持GAE的长期,最好是贴近Web应用程序/的WebOb。 它使SDK支持库微风,维护变得轻松了许多,更面向未来的新库和SDK功能,将工作开箱即用,并有一个大的社区大约在同一应用程序引擎工具的工作的好处。

具体webapp2的防御总结在这里 。 添加到那些webapp2的可以App Engine的外部使用 ,是很容易被定制看起来像流行的微架构 ,你有一个很好的一套令人信服的理由为它去。 此外,webapp2的必须包括在未来的SDK发布一个很大的机会(这是额外的,官方的,不要引用我:-)这将推动其向前,并带来新的发展和贡献。

这就是说,我WERKZEUG和Pocoo家伙的大风扇,并从瓶和其他(web.py,龙卷风)借了很多,但是 - 而且,你知道,我有偏见 - 上述webapp2的利益应该考虑到。



Answer 2:

你提的问题非常广泛,但似乎是在谷歌App Engine的使用瓶没有什么大的问题。

这个邮件列表线程链接到几个模板:

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

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

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

此外,请参阅App Engine的-无法正常访问Twitter的数据-瓶 , 瓶消息闪烁在重定向失败 ,以及如何管理与谷歌App Engine的第三方Python库? (virtualenv中?PIP?)的人曾与瓶和谷歌App Engine的问题。



Answer 3:

对我来说webapp2的决定是容易的,当我发现烧瓶不是一个面向对象的架构(从一开始),而webapp2的是一个纯面向对象的框架。 webapp2的使用基于调度的方法作为标准对所有RequestHandlers(如烧瓶文档调用它和实现它由于MethodViews V0.7)。 而在烧瓶MethodViews是一个附加它是一个webapp2的核心设计原则。 所以,你的软件设计看起来不同使用两个框架。 这两个框架使用时下Jinja2的模板和相当功能相同。

我更喜欢安全检查添加到一个基类RequestHandler,并从它继承。 这也有利于实用功能,等等。如可以看到,例如在链路[3]可以重写的方法,以防止调度的请求。

如果你是一个面向对象的人,或者如果你需要设计一个REST的服务器,我会建议webapp2的为您服务。 如果你喜欢简单的功能与装饰为处理多个请求的类型,或者你是一个面向对象的继承不舒服,然后选择烧瓶中。 我认为这两个框架避免像金字塔更大框架的复杂性和相关性。

  1. http://flask.pocoo.org/docs/0.10/views/#method-based-dispatching
  2. https://webapp-improved.appspot.com/guide/handlers.html
  3. https://webapp-improved.appspot.com/guide/handlers.html#overriding-dispatch


Answer 4:

我认为谷歌应用程序引擎正式支持烧瓶框架。 有一个示例代码和教程这里- > https://console.developers.google.com/start/appengine?_ga=1.36257892.596387946.1427891855



Answer 5:

我没有尝试webapp2的发现tipfy有点很难使用,因为它需要安装脚本并构建一个配置Python安装到默认以外。 对于这些和其他原因,我还没有做出我最大的项目依赖于一个框架,我用的是普通的web应用程序,而不是,添加一个名为烧杯中获取会话能力和Django的已经是图书馆内置的翻译常见的多数用例所以建立一个单词时,本地化应用Django的是我的最大的项目是正确的选择。 我居然部署项目到生产环境中的2个其他框架是GAEframework.com和web2py中,一般看来,增加一个框架,改变它的模板引擎可能会导致新旧版本之间不兼容。

所以我的经验是,我是不愿意加入一个框架,我的项目,除非他们解决了更高级的使用情况(文件上传,多身份验证,管理用户界面是更高级的用例3个例,在目前的GAE无框架处理好。



文章来源: Flask vs webapp2 for Google App Engine