浅谈Flask 中的 线程局部变量 request 原理
2017-11-27 17:25
429 查看
在多线程服务器中客户端每建立一个链接,服务器就创建一个线程,每个线程中就会有一个request来表示客户端的链接请求信息。
不同的用户访问flask服务器.都有自己的request.
from flask import request
用户A------------线程A-------------> @app.route("/index")
用户B------------线程B-------------> def index():
request.args.get()
..............................
线程局部变量的本质是全局变量 大概的实现方式>>>>> request={
"线程A":{args,data,form...}
"线程B":{args,data,form...},
....................
}
Flask 隐藏了一个细节 线程A使用这段函数的时候,并不能直接操作 args,data.等等,
它先看这段代码当中运行到哪个线程,识别出这个线程,
从request当中根据当前这个线程的编号,把属于这个线程的参数值拿出来.
虽然request还是一个全局变量,但是在取值的时候,做了类似相对应的手脚(当然,flask的手脚并没有这么简单,但是并不妨碍我们理解),实现了线程之间的隔离.
不同的用户访问flask服务器.都有自己的request.
from flask import request
用户A------------线程A-------------> @app.route("/index")
用户B------------线程B-------------> def index():
request.args.get()
..............................
线程局部变量的本质是全局变量 大概的实现方式>>>>> request={
"线程A":{args,data,form...}
"线程B":{args,data,form...},
....................
}
Flask 隐藏了一个细节 线程A使用这段函数的时候,并不能直接操作 args,data.等等,
它先看这段代码当中运行到哪个线程,识别出这个线程,
从request当中根据当前这个线程的编号,把属于这个线程的参数值拿出来.
虽然request还是一个全局变量,但是在取值的时候,做了类似相对应的手脚(当然,flask的手脚并没有这么简单,但是并不妨碍我们理解),实现了线程之间的隔离.
相关文章推荐
- flask的request_context原理 基于flask v0.1
- Ajax原理-原生js的XMLHttpRequest对象意义
- android中的消息机制--浅谈Handler的原理及使用
- Request 接收参数乱码原理解析二:浏览器端编码原理
- 浅谈boostrap轮播插件原理
- XMLHttpRequest Level 2 使用指南——ajax实现http(s)协议的原理
- 浅谈QQ密码保护原理
- flask-login用户加载流程,user_callback,token_callback,request_callback,header_call_back相关问题
- 深入浅谈,CPU设计原理
- ajax原理和XmlHttpRequest对象
- 浅谈 Vue v-model指令的实现原理
- Portal技术原理浅谈
- push通知的原理浅谈
- 浅谈扫描二维码登录微信网页版与摇一摇传图的实现原理
- 网页性能管理详解:浅谈chrome-Timeline及window.requestAnimationFrame()方法
- 浅谈NAT的原理、缺陷及其解决之道
- 浅谈java阻塞队列实现原理
- MySQL锁原理浅谈
- 浅谈Exchange Server邮件存储系统-原理篇(3)
- 浅谈Java 虚拟机与GC原理