何时使用WSGI中间件?

时间:2010-09-05 13:40:30

标签: python wsgi

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

但是,WSGI中间件是为什么发明的?我刚读过WSGI Middleware Considered Harmful并想知道我是否应该重写我的路由器不再是中间件。如果应用程序使用带有捕获组的dict,则应用程序将依赖于我的中间件。另一方面,没有应用程序必须使用此额外的dict。我还可以放弃路径参数提取并将路由器减少到路由,但是然后每个应用程序必须第二次重新运行正则表达式以进行路径参数提取。

那该怎么做:

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

1 个答案:

答案 0 :(得分:4)

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

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

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