flask上下管理文相关 - 总结

flask上下文管理机制

当用户请求到来之后,flask内部会创建两个对象:
ctx = ReqeustContext(),内部封装request/sesion
app_ctx = AppContext(),内部封装app/g
然后会将此对象通过各自的LocalStack对象:
_request_ctx_stack = LocalStack()
_app_ctx_stack = LocalStack()
将各自的对象添加到local中. Local是一个特殊结构,他可以为每个线程(协程)维护一个空间进行存取数据.
LocalStack的作用是将Local中维护成一个栈.
内部更细节的结构我也研究过:
storage = {
1212:{stack:[ctx,]}
} storage = {
1212:{stack:[app_ctx,]}
} 视图函数如果想要获取:request/session/app/g,只需要导入即可,导入的本质是去各自storage中获取各自的对象,并调用封装其内部:request/session/app/g. (获取栈顶的数据top) 请求处理完毕,将各自storage中存储的数据进行销毁.

流程图

最新文章

  1. NodeJs之child_process
  2. $_SERVER
  3. jQuery插件开发(溢出滚动)
  4. [转]Multiple outputs from T4 made easy
  5. javaSE第七天
  6. TransparentBlt函数的使用注意事项
  7. windows内核窥探
  8. send,recv,sendto,recvfrom
  9. bzoj 3831 Little Bird (单调队列优化dp)
  10. hdu 4501 小明系列故事——买年货_二维背包
  11. scanf 和cin 的区别
  12. mysql增量ID 启动值更改方法
  13. javascript的getter和setter(转)
  14. java.lang.Thread
  15. HTML5总结
  16. Electron桌面应用打包流程
  17. burp Suite 模块Authz 使用方法
  18. Spark基础-scala学习(三、Trait)
  19. JavaScript是如何工作的:事件循环和异步编程的崛起 + 5种使用 async/await 更好地编码方式!
  20. CentOS 6.8 部署django项目一

热门文章

  1. JAVA开发WEBSERVICE方式
  2. [Google Guava] 1.1-使用和避免null
  3. CF812C Sagheer and Nubian Market 二分+贪心
  4. 【FTP】详解
  5. 洛谷P5369 [PKUSC2018]最大前缀和 [DP]
  6. 数据结构实验之栈与队列五:下一较大值(一)(SDUT 3332)
  7. CF1195B
  8. ajax与HTML5 history API实现无刷新跳转
  9. UML期末复习题——2.6:Package Diagram
  10. linux下如何批量替换多个文件中的某个字符串?