werkzeug local
werkzeug
没有使用threading.loca
而是自己实现了werkzeug.local.local
类
相比 threading.local
,werkzeug.local.local
的优势:
1.在有greenlet
的时候,优先使用greenlet
id,而不是thread
id,既它支持协程,而thread.local
只支持线程
2.实现了werkzeug
的__release_local__
,可以被自己的release_pool
函数析构,释放当前线程的状态,避免thread.local
可能产生的脏数据.
此外werkzeug
还实现了LocalStack
和LocalProxy
两种数据结构.
LocalStack
是用Local
实现的栈结构,可以将对象推入,弹出,或拿到栈顶的对象,所有的修改都只在本线程中可见.
LocalProxy
是代理模式实现的,在构造时接收一个callable的参数,这个callable被调用后返回值是一个Thread Local
对象.对LocalProxy
的所有操作,包括属性访问,方法调用,都会转发到Thread Local
对象上.
https://blog.tonyseek.com/post/the-context-mechanism-of-flask/
https://cizixs.com/2017/01/13/flask-insight-context/
werkzeug local相关推荐
- werkzeug.local
虽然python提供的有threadlocal但是在web开发中: 1.使用greenlet时,无法保证协程时间的数据隔离,因为不同的协程在一个线程中 2.wsgi无法保证每个http请求使用的是不同 ...
- werkzeug.Local 对象
在Python中,除了线程还有一些其他的并发方法如协程.所以在一个WSGI服务中,我们不能保证所有的请求都是以线程的形式存在.另外一种情况是当前请求复用了之前请求的线程,所以上一个请求的数据留在了当前 ...
- werkzeug LocalProxy
1.当我们代理的理解 from werkzeug.local import LocalStack, LocalProxyl_stack = LocalStack() l_stack.push({'na ...
- Web后端学习笔记 Flask(11)Local线程隔离对象
flask中的上下文:应用上下文和请求上下文 1. 在flask中,是通过request对象获取用户提交的数据,但是在整个程序运行中,只有一个request对象.在实际应用场景中,会有多个用户同时进行 ...
- 什么是Werkzeug
上一节介绍了什么是WSGI,这一节我们看看Werkzeug 按照官方的说法,Werkzeug(源自德语,工具的意思)是一个WSGI工具库,它开始于一个适用于WSGI的多样化的工具集,后来发展成了现在非 ...
- Python Web 框架工具包 werkzeug
一.什么是werkzeug werkzeug 官方的介绍说是一个 WSGI 工具包,不是一个web服务器,也不是一个web框架,它可以作为一个 Web 框架的底层库,因为它封装好了很多 Web 框架的 ...
- Werkzeug框架
在我们使用Flask以及Werkzeug框架的过程中,经常会遇到如下三个概念:Local.LocalStack和LocalProxy.尤其在学习Flask的Request Context和App Co ...
- 面试前赶紧看了5道Python Web面试题,Python面试题No17
目录 本面试题题库,由公号:非本科程序员 整理发布 第1题: Flask中的请求上下文和应用上下文是什么? 第2题:django中间件的使用? 第3题: django开发中数据做过什么优化? 第4题: ...
- celery源码分析-Task的初始化与发送任务
celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery的任务发送 在Django项目中使用了装饰器来包装待执行任务, from cel ...
最新文章
- 数据特殊显示``````
- Python编程语言学习:在根目录的py文件内调用某叶目录文件内的包/库或者函数(常用在GUI编程)之详细攻略
- c语言getch在哪个头文件,用getch()需要头文件吗?
- java抢购防止多次请求_springboot项目中接口防止恶意请求多次
- html5 drawimage 不显示,javascript – 来自视频的HTML5 Canvas drawImage在第一次绘制时不显示...
- 致我唯一的kiyoumi
- 售票系统的组件图和部署图_门禁安装大样图、管线图、系统图、电锁安装图
- (centos6.5)MySQL服务安装
- macOS Monterey 12.0beta4黑苹果镜像虚拟机版本
- Spring注解之精进之路--超级详解
- C++统计代码执行耗时
- iOS 苹果官方Demo合集
- 伦敦银走势分析最新,十大国际黄金白银交易平台排名
- 小米3解锁移动版(2013061)解账号锁刷机包
- 使用Spyder2 Express校色仪对屏幕进行校色
- 【微信公众号】JS-SDK页面打开提示realAuthUrl错误
- 【设计模式二十三剑】✨编写更高质量代码的秘诀✨
- Git 常用命令、代码合并
- CiteSpace作者共被引图含义详细解析
- SpringMVC框架通过Excel批量导入数据
热门文章
- sql取日期的年月_机油检测美版银美孚5W30,生产日期20年1月
- Python的turtle库还能绘制这些有趣图形?
- stm32手册_STM32的GPIO概念简介
- 机器学习模型_如何口述机器学习模型原理
- tc275单片机的内核_TC275开发板学习心得(一)
- 1000道Python题库系列分享23(61个填空题)
- 微课|《Python编程基础与案例集锦(中学版)》第2章(2)
- 1000道Python题库系列分享五(40道)
- 1900页Python系列PPT分享六:面向对象程序设计(86页)
- Pandas创建DataFrame对象的几种常用方法