阐述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的一个对象

posted @ 2020-03-07 15:07  番茄炒蛋548542  阅读(268)  评论(0编辑  收藏  举报