免责声明:我是tipfy 和webapp2 的作者。
坚持使用 webapp(或其自然演变,webapp2)的一大优势是您不必为您选择的框架为现有 SDK 处理程序创建自己的版本。
例如,deferred使用 webapp 处理程序。要在纯 Flask 视图中使用它,使用 werkzeug.Request 和 werkzeug.Response,您需要为它实现 deferred(就像我在这里为 tipfy 所做的那样)。
其他处理程序也是如此:blobstore(Werkzeug 仍然不支持范围请求,因此即使您创建自己的处理程序,您也需要使用 WebOb - 请参阅tipfy.appengine.blobstore)、邮件、XMPP 等等,或将来包含在 SDK 中的其他内容。
对于使用 App Engine 创建的库也是如此,例如ProtoRPC,它基于 webapp 并且如果您不想混合使用 webapp 和 your-framework-of- 则需要端口或适配器才能与其他框架一起使用同一应用程序中的选择处理程序。
因此,即使您选择了不同的框架,您也将结束 a) 在某些特殊情况下使用 webapp 或 b) 必须为特定的 SDK 处理程序或功能创建和维护您的版本,如果您将使用它们。
我更喜欢 Werkzeug 而不是 WebOb,但是在移植和维护原生与 tipfy 一起工作的 SDK 处理程序版本一年多之后,我意识到这是一个失败的原因——要长期支持 GAE,最好是保持接近网络应用程序/WebOb。它使对 SDK 库的支持变得轻而易举,维护变得更加容易,它更具前瞻性,因为新库和 SDK 功能将开箱即用,并且有一个大型社区围绕相同的 App Engine 工具工作的好处。
这里总结了一个特定的 webapp2 防御。再加上webapp2 可以在 App Engine 之外使用,并且很容易定制成看起来像流行的微框架,你有很多令人信服的理由去使用它。此外,webapp2 很有可能被包含在未来的 SDK 版本中(这是非官方的,不要引用我的话 :-) 这将推动它向前发展并带来新的开发人员和贡献。
也就是说,我是 Werkzeug 和 Pocoo 的忠实粉丝,我从 Flask 和其他人(web.py、Tornado)那里借了很多东西,但是——而且,你知道,我有偏见——以上 webapp2 的好处应该予以考虑。