Flask上下文源码
2019-04-17 17:15:54 0 举报
Flask请求上下文框架流程图
作者其他创作
大纲/内容
RequestContext的__init__方法,从environ中序列化出request
name=method
.top
下文开始:
wsgi_app
request.method
类似{_local:{'__storage__':{}, '__ident_func__':get_ident}}数据结构
LocalProxy的 __getattr__方法
_request_ctx_stack
self.session = None
ctx = self.request_context(environ)
_request_ctx_stack数据:{'__storage__':{9527:{'stack':[(ctx)request/session]}}, '__ident_func__':get_ident}
实例化LocalProxy时,__init__为对象添加__local、__name__、__wrapped__等属性,其中__local就是偏函数
top = _request_ctx_stack.top
_app_ctx_stack = LocalStack()
包含request/session
app.__call__
_get_current_object
top=None
return self.__local()#执行偏函数,得到request,此处self为LocalProxy对象
ctx.push()
_request_ctx_stack.push(self)
此处app为Flask实例化对象,本质上调用Flask类的wsgi_app方法
top=(ctx)request / session
上文开始:
return self._local.stack[-1]
利用反射从request中拿到method
_lookup_req_object
调用LocalStack的push方法
0 条评论
回复 删除
下一页