加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

flask:wsgi-middleware vs before_和after_request()

发布时间:2020-12-16 23:31:25 所属栏目:Python 来源:网络整理
导读:我发现使用Flask的before_request()和/或after_request()与使用WSGI中间件的区别究竟是多么令人困惑. 说我想做一些非常愚蠢的事情: 每个请求体都应扫描“bacon”一词,并替换为“eggs”. 现在请求命中flask-view(根据url-mapping),view-function创建响应 每
我发现使用Flask的before_request()和/或after_request()与使用WSGI中间件的区别究竟是多么令人困惑.

说我想做一些非常愚蠢的事情:

>每个请求体都应扫描“bacon”一词,并替换为“eggs”.
>现在请求命中flask-view(根据url-mapping),view-function创建响应
>每个响应体应扫描“蛋”并替换为“培根”

我会使用WSGI中间件还是Flask功能?来自django的非常强大的中间件套件,差异对我来说并不清楚.

提前致谢.
贝尔尼

解决方法

实际上,你在Django中有完全相同的选择. Django在某种程度上是基于WSGI构建的,因此理论上你也可以在Django中编写WSGI中间件或Django中间件.你没有混淆的原因是因为Django社区通常会引导开发人员远离WSGI中间件.一个原因是由于Django被设计为在 mod_python和WSGI上同等工作.通过使用Django中间件,您的中间件可以在两个系统上运行(参见 this post by James Bennett).

创建WSGI中间件的一个优点是它可以在多个框架中使用.例如,Beaker是一个会话和缓存WSGI中间件,可以在任何WSGI框架中使用.如果它是专门在Flask中编写的,那么Pyramid开发人员就无法使用它.该库的维护者特别确保该库可以在多个框架中工作,因此他将其编写为WSGI库.

基本上,这就是我做出决定的方式:

>如果您只是编写一个特定于您的应用程序的中间件,请使用框架的中间件.
>如果您认为您的中间件在一些应用程序中很有用,并且可能对其他人有用,那么仍然使用框架的中间件(Flask通常称之为“扩展”).以Flask-SQLAlchemy为例.>如果人们对您的中间件真正感兴趣并且愿意提供帮助,请考虑将其转换为WSGI中间件库,以便可以在其他框架中使用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读