阅读(2382) (18)

Flask 上下文如何工作

2021-06-28 15:58:51 更新

如果你研究 Flask WSGI 应用内部如何工作,你会找到和这非常相似的一段代码:

def wsgi_app(self, environ):
    with self.request_context(environ):
        try:
            response = self.full_dispatch_request()
        except Exception, e:
            response = self.make_response(self.handle_exception(e))
        return response(environ, start_response)

request_context()​ 方法返回一个新的 ​RequestContext​ 对象,并结合 with 声明来绑定上下文。 从相同线程中被调用的一切,直到 with 声明结束前,都可以访问全局的请求 变量( ​flask.request​ 和其它)。

请求上下文内部工作如同一个栈。栈顶是当前活动的请求。 ​push()​ 把上下文添加到栈顶, ​pop()​ 把它移出栈。在出栈时,应用的 ​teardown_request()​ 函数也会被执行。

另一件需要注意的事是,请求上下文被压入栈时,并且没有当前应用的应用上下文, 它会自动创建一个 应用上下文 。