什么时候使用 WSGI 中间件?

dea*_*mon 5 python wsgi

我编写了一个路由器,它采用请求的路径,将其与正则表达式匹配,并在正则表达式匹配时调用 WSGI 处理程序。具有匹配捕获组的 dict 被添加到环境中。用 WSGI 中间件修改环境是不是很糟糕?

但这就是 WSGI 中间件的发明目的吗?我刚刚阅读了被认为有害的 WSGI 中间件,并想知道我是否应该重写我的路由器以使其不再是中间件。应用程序变得依赖于我的中间件,如果它使用带有捕获组的 dict。另一方面,没有应用程序必须使用这个额外的字典。我也可以放弃路径参数提取并将路由器减少到路由,但是每个应用程序都必须第二次重新运行正则表达式以提取路径参数。

那么该怎么办:

  • 原样离开;带有路由、路径参数提取和environ操作
  • 使路由器成为 WSGI 应用程序和当前 WSGI 应用程序框架特定的处理程序
  • 将路由器减少到路由和提取 在请求被路由到的应用程序中执行第二次正则表达式匹配以提取路径参数

Ian*_*ing 5

如果您将东西添加到环境中,然后在应用程序中使用这些东西,没有任何回退,那么您必须在某种程度上将应用程序绑定到中间件。

在这种特殊情况下,有一个关于如何将这些捕获的值添加到环境中的约定wsgiorg.routing_args。因此,虽然您会将对此捕获的引用放入您的应用程序中,但它并非完全是临时通信。

(虽然你当然可以过度使用中间件,但我认为那篇文章夸大了这种情况;中间件可以是一个很好的抽象,可以分别考虑、实现和测试应用程序的不同部分,即使最初这些部分是为了一个单一的目标而实现的一个人)