Flask Application 工作流程
2017-01-23 16:20:40 0 举报
flask 工作流程总结
作者其他创作
大纲/内容
_request_ctx_stack 的栈顶元素即为当前的请求上下文,相应的 _app_ctx_stack 的栈顶元素就是当前的应用上下文了
在生产环境实际运行时,app和request 这两个上下文的堆栈里面应该最多都只有一个元素。什么时候会出现多个?
WSGI Server监听端口,等待HTTP请求,调用 Flask 实例 app 进行处理
Request Context 类的 push 方法会先检查(1) _app_ctx_stack 为空 (2)栈顶元素的app和自身的app不是同一个满足任意一个条件就会隐式的推入自身的 App Context
请求上下文对象实际存储路径为 (应用上下文类似):_request_ctx_stack._local.__storage__[_request_ctx_stack.__ident_func__]['stack']
请求上下文对象:_request_ctx_stack.top.request_request_ctx_stack.top.session应用上下文对象:_app_ctx_stack.top.g
虽然调用的是 flask 实例 app 的__call__ 方法,但是这里实际传递给了 wsgi_app 方法
wsgi_app 方法接受 environ 参数生成 Request Context 实例(请求上下文)并推入 _request_ctx_stack 堆栈
0 条评论
下一页