阐述Flask上下文管理流程(侧重于回答面试问题,不看源码)
1.首先请求进入app被序列化至*CTX对象总,并将对象储存在*_request_ctx_stack;
2.在视图函数中使用request调用,request是一个*LocalProxy对象,专门获取*_request_ctx_stack对象中的数据
3.当视图函数结束后,*_request_ctx_stack自动清除当前请求的*CTX所有信息
*CTX:序列化请求原始信息其中包含app、request、session、g
*_request_ctx_stack:LocalStack #对象在其中包含一个Local对象 { _local: { __storage__: { 9527:{stack:[CTX]} }, __ident_func__:get_ident } }
*LocalProxy:本地代理对象,用于获取_request_ctx_stack:LocalStack中的数据
request就是LocalProxy的一个对象