浅谈Flask 中的 线程局部变量 request 原理
2024-10-20 20:36:49
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
在多线程服务器中客户端每建立一个链接,服务器就创建一个线程,每个线程中就会有一个request来表示客户端的链接请求信息。
不同的用户访问flask服务器.都有自己的request.
用户A------------线程A-------------> request
用户B------------线程B-------------> request
- from flask import request
- @app.route("/index")
- def index():
- params = request.args.get()
- return "hello world"
线程局部变量的本质是全局变量 大概的实现方式>>>>>
- request={
- "线程A":{args,data,form...},
- "线程B":{args,data,form...}
- # ....................
- }
Flask 隐藏了一个细节 线程A使用这段函数的时候(比如request.args),并不能直接操作 args,data.等等,
它先看这段代码当中运行到哪个线程,识别出这个线程,
从request当中根据当前这个线程的编号,把属于这个线程的参数值拿出来.
虽然request还是一个全局变量,但是在取值的时候,做了类似相对应的手脚(当然,flask的手脚并没有这么简单,但是并不妨碍我们理解),实现了线程之间的隔离.
最新文章
- Ajax请求接口加密研究(针对网页前端的接口安全加密机制研究)
- paip.基于navicate mysql的自动化报表工具总结
- checkbox 全選、取消全選、反選
- 上传文件格式控制的困惑(application/octet-stream 限制不了BAT等格式上传)问题解决
- MySQL性能调优与架构设计读书笔记
- 算法如功夫——C++ 用递归函数计算n的阶乘n!
- cocos2dx lua中异步加载网络图片,可用于显示微信头像
- 201521123006 《Java程序设计》第4周学习总结
- java学习札记
- shell cut 应用实战
- Mac OS X系统下,svn: Can't remove file Operation not permitted.解决方案
- docker+ubuntu14.04+cuda7.0
- java之数据库相关
- MHA高可用
- 2、原生jdbc的dao模式
- CC2431 代码分析②-CC2431狂轰滥炸
- 专题8:javascript中事件
- centos7 ssh连接慢
- About me &; 一些置顶的博文
- mvc导出excel记录
热门文章
- vue.config.js 配置 scss,less,sass全局配置 vuecli3
- Linux 中【./】和【/】和【.】之间有什么区别?
- ES6中的关键字 - const
- Sitecore 8.2 工作流程
- vs2015 出现的错误lnk:200:-main已在ax.obj中定义
- 使用scrapy框架做武林中文网的爬虫
- Python开发【第十二篇】python作用域和global nonlocal
- C# vb .NET读取识别条形码线性条码code39
- 《C++ Primer》学习总结;兼论如何使用'书'这种帮助性资料
- ES6 字符串&;正则表达式