内容详细:
1. 上下文
a. 请求上下文
- request
- session
b. 应用上下文
请求流程:
_request_ctx_stack.local = {
}
_app_ctx_stack.local = {
}
1. 请求到来 ,有人来访问
# 将请求相关的数据environ封装到了RequestContext对象中
# 再讲对象封装到local中(每个线程/每个协程独立空间存储)
# ctx.app # 当前APP的名称
# ctx.request # Request对象(封装请求相关东西)
# ctx.session # 空
_request_ctx_stack.local = {
唯一标识:{
"stack":[ctx, ]
},
唯一标识:{
"stack":[ctx, ]
},
}
# app_ctx = AppContext对象
# app_ctx.app
# app_ctx.g
_app_ctx_stack.local = {
唯一标识:{
"stack":[app_ctx, ]
},
唯一标识:{
"stack":[app_ctx, ]
},
}
2. 使用
from flask import request,session,g,current_app
print(request,session,g,current_app)
都会执行相应LocalProxy对象的 __str__
current_app = LocalProxy(_find_app)
request = LocalProxy(partial(_lookup_req_object, 'request'))
session = LocalProxy(partial(_lookup_req_object, 'session'))
current_app = LocalProxy(_find_app)
g = LocalProxy(partial(_lookup_app_object, 'g'))
3. 终止,全部pop
Flask 请求上下文、应用上下文
最新推荐文章于 2024-05-31 15:09:06 发布