gpt4 book ai didi

request - flask:wsgi-middleware与before_和after_request()

转载 作者:行者123 更新时间:2023-12-03 15:37:01 25 4
gpt4 key购买 nike

我发现使用Flask的before_request()和/或after_request()与使用WSGI中间件的区别到底是什么,真是令人困惑。

说我想做这样的非常愚蠢的事情:

  • 应该在每个请求正文中扫描单词“bacon”,并用“eggs”代替。
  • 现在请求命中flask-view(根据URL映射),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框架中使用的 session 和缓存WSGI中间件。如果它是用Flask专门编写的,那么金字塔开发人员将无法使用它。该库的维护者专门确保该库可以在多个框架中工作,因此他将其编写为WSGI库。

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

  • 如果您只是在编写一种特定于您的应用程序的中间件,请使用框架的中间件。
  • 如果您认为中间件在某些应用程序中有用,并且可能对其他人有帮助,请仍然使用框架的中间件(Flask通常将其称为“扩展”)。以Flask-SQLAlchemy为例。
  • 如果人们对中间件真的很感兴趣并且愿意提供帮助,请考虑将其转换为WSGI中间件库,以便可以在其他框架中使用。
  • 关于request - flask:wsgi-middleware与before_和after_request(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11926582/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com