flask面试题
1. 为什么要创建两个Local?或两个LocalStack?
- 编写离线脚本时,需要配置文件,而配置文件存放在app中。
- 编写离线脚本时,不需要请求相关的数据。
所以,将app和请求相关的数据分开:
- 应用上下文(app,g)
- 请求上下文(request,session)
2.web运行时(web runtime):
请求Local = {
1111:{
stack:[ctx1,]
},
1112:{
stack:[ctx2,]
}
}
应用Local = {
1111:{
stack:[app_ctx1,]
}
1112:{
stack:[app_ctx2,]
},
}
1 from flask import current_app 2 app1 = create_app() 3 app_ctx1 = app1.app_context() # app_ctx = app/g 4 5 app2 = create_app() 6 app_ctx2 = app2.app_context() # app_ctx = app/g 7 8 with app_ctx1: # __enter__,通过LocalStack放入Local中 9 print(current_app) # app1 10 with app_ctx2: 11 print(current_app) # app2 12 13 print(current_app) # app1 14 15 """ 16 请求Local = { 17 } 18 19 应用Local = { 20 1111:{ 21 stack:[app_ctx1,app_ctx2] 22 } 23 } 24 """