中间件是扩展 WSGI 应用程序功能的一种简单方法。由于您只需要提供一个可调用对象,因此您可以随意将其包装在其他函数中。
例如,假设我们要检查environ
. 我们可以轻松地创建一个中间件来执行此操作,如下例所示:
import pprint
def handler(environ, start_fn):
start_fn(‘200 OK’, [(‘Content-Type’, ‘text/plain’)])
return [“Hello World!\n”]
def log_environ(handler):
def _inner(environ, start_fn):
pprint.pprint(environ)
return handler(environ, start_fn)
return _inner
app = log_environ(handler)
这里,log_environ
是一个返回函数的函数,它environ
在推迟到原始回调之前漂亮地打印参数。
以这种方式编写中间件的好处是中间件和处理程序不必相互了解或关心。例如,您可以轻松地log_environ
连接到Flask应用程序,因为 Flask 应用程序是 WSGI 应用程序。
其他一些有用的中间件想法:
import pprint
def handle_error(handler):
def _inner(environ, start_fn):
try: