如果你研究 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() 函数也会被执行。
另一件需要注意的事是,请求上下文被压入栈时,并且没有当前应用的应用上下文,
它会自动创建一个 应用上下文 。
作者:andy,如若转载,请注明出处:https://www.web176.com/flask2/21698.html