但是,有很多关于Flask的好评,我真的很喜欢它的方法和所有文档中读到的东西,我想试一试。但我有些担心在使用Flask时可能会面临的限制。
因此,问题是 - 你知道Flask在Google App Engine应用程序中可能带来什么问题、性能问题、限制(例如路由系统、内置授权机制等)吗?我所说的“问题”是指无法在几行代码(或任何合理数量的代码和努力)内解决的问题或完全不可能的问题。
作为后续问题:您认为Flask有哪些杀手功能可以让我惊艳并让我使用它,尽管我可能会面临任何问题?
免责声明:我是tipfy和webapp2的作者。
坚持使用webapp(或其自然演变形式webapp2)的一个重要优势是,您不必为现有SDK处理程序的框架创建自己的版本。
例如,deferred使用webapp处理程序。要在纯Flask视图中使用它,使用werkzeug.Request和werkzeug.Response,您需要为其实现延迟(就像我在tipfy中所做的here)。
其他处理程序也是如此:blobstore(Werkzeug仍不支持范围请求,因此即使创建自己的处理程序,您也需要使用WebOb--请参见tipfy.appengine.blobstore),邮件,XMPP等等,或者将来包含在SDK中的其他处理程序。
对于专为App Engine设计的库,例如ProtoRPC,情况也是如此,它基于webapp,并且如果您不想在同一应用程序中混合webapp和您选择的框架处理程序,则需要进行端口或适配器。
所以,即使您选择了不同的框架,您最终会a)在某些特殊情况下使用webapp,或b)不得不为特定的SDK处理程序或功能创建和维护自己的版本,如果您要使用它们。尽管如此,我非常喜欢Werkzeug和Pocoo团队,并从Flask和其他框架(如web.py和Tornado)中借鉴了很多东西。但是,以上提到的webapp2的优点应该被考虑在内。
您的问题非常广泛,但似乎在Google App Engine上使用Flask没有大问题。
这个邮件列表线程链接到几个模板:
这里还有一个特定于Flask / App Engine组合的教程:
http://www.franciscosouza.com/2010/08/flying-with-flask-on-google-app-engine/
此外,请参阅以下问题:App Engine - Difficulty Accessing Twitter Data - Flask、Flask message flashing fails across redirects和How do I manage third-party Python libraries with Google App Engine? (virtualenv? pip?),这些问题涉及到Flask和Google App Engine的一些问题。
所以我的经验是,除非解决更高级的用例(文件上传、多身份验证、管理UI是3个目前没有框架能很好处理的更高级用例),否则我会不太愿意将框架添加到我的项目中。
flask-babel
用于多语言支持,以及flask-seasurf
用于CSRF支持以保护我的表单。 - ThePloki