flask之上下文管理

简单来说,falsk上下文管理可以分为三个阶段:
  1、请求进来时,将请求鞋底的相关数据放入上下文管理中进行管理
  2、在视图函数中,要去上下文管理中取值
  3、请求响应之后,要将上下文管理中的数据清除
  
详细点来说:
  1、请求刚进来,将request,session封装在RequestContext类中,app,g封装在AppContext类中,并通过LocalStack将requestcontext和appcontext放入Local类中
  2、视图函数中,通过localproxy--->偏函数--->localstack--->local取值
  3、请求相应时,先执行save.session()再各自执行pop(),将local中的数据清除

上下文管理流程图:

原文地址:https://www.cnblogs.com/thismyblogs/p/9763779.html

时间: 2024-08-30 06:43:34

flask之上下文管理的相关文章

python之上下文管理、redis的发布订阅

使用with打开文件的方式,是调用了上下文管理的功能 1 #打开文件的两种方法: 2 3 f = open('a.txt','r') 4 5 with open('a.txt','r') as f 6 7 实现使用with关闭socket 8 import contextlib 9 import socket 10 11 @contextlib.contextmanage 12 def Sock(ip,port): 13 socket = socket.socket() 14 socket.bi

8.python之上下文管理协议

使用上下文管理协议,有什么好处? 使用with语句的目的就是把代码块放入with中执行,with结束后,自动完成清理工作,无须手动干预. 在需要管理一些资源比如文件,网络连接和锁的编程环境中,可以在__exit__中定制自动释放资源的机制,你无须再去关系这个问题,这将大有用处. 之前所提到的with代码块,就是python的上下文管理操作,比如说通过python打开一个文件,就可以通过with代码块结合open去实现,通过这种方式打开的文件,执行了相应的操作后,无需我们手动去close文件,文件

python之上下文管理器

关于计算器运行的上下文的概念,我的理解也不是很深:按我的理解就是程序在运行之前,其所需要的资源,运行环境等都会被序列化,然后加入到CPU的任务队列中,等待调度系统分配时间片执行.下面谈谈python上下文管理器的使用. 自定义上下文管理器 python中最常用的上下文管理器就是文件的打开和关闭了. with open(filename,'r') as file: file.read() 原理 python上下文使用with触发,内部实现了__enter__和__exit__两个魔法方法. cla

Python之上下文管理协议

一.上下文管理协议 <1>常规操作3步open: 1.f = open('a.txt') 2.对文件的操作 3.f.close() 上边两种操作 第二种操作因为打开文件之后必须关闭,不关闭占用内存的资源 而上下文管理协议就不会, 内存采用回收机制自动的去把对象清理掉 好处就是可以在exit方法中自动释放资源 <2>with with open('a.txt') as f: '代码块'上述就是上下文管理协议 __enter__ __exit__ 1 class Foo: 2 3 de

Flask的上下文管理机制

前引 在了解flask上下文管理机制之前,先来一波必知必会的知识点. 面向对象双下方法 首先,先来聊一聊面向对象中的一些特殊的双下划线方法,比如__call__.__getattr__系列.__getitem__系列. __call__ 这个方法相信大家并不陌生,在单例模式中,我们可能用到过,除此之外,还想就没有在什么特殊场景中用到了.我们往往忽视了它一个很特殊的用法:对象object+()或者类Foo()+()这种很特殊的用法.在Flask上下文管理中,入口就是使用了这种方式. __getit

with和上下文管理器

with和上下文管理器 如果你有时间阅读源码的习惯,可能会看到一些优秀的代码会出现带有with关键字的语句. 对于系统资源如文件,数据库连接,socket而言,应用程序打开这些资源并执行完业务逻辑之后,必须要做的事情就是关闭该资源. 在上篇文件中,我们读写文件操作,完毕之后,关闭文件对象.调用close方法,下面来看看如何正确的关闭一个文件. 普通版 def func(): f = open("1.txt", "w") f.write("Python&qu

12. Flask的上下文管理

一.Threading.local 通过Threading.local实现本地存储隔离:当我们开启多线程来执行func函数,通过自定义的Foo类来存储数据时,我们发现最终的输出结果是全部的线程打印的都是一个最终的数字10,这是因为这样存储的数据线程之间是共享的,当最后一个线程执行func函数时,由于func函数time.sleep了1秒钟,第一个线程还没有来得及打印数据呢,就被最后一个线程传的参数给覆盖了,从而线程们打印的结果都是相同的. from threading import local

Flask框架 之上下文、请求钩子与Flask_Script

一.上下文 请求上下文:request与session 应用上下文:current_app与g:一次请求多个函数可以用它传参 @app.route("/") def index(): g.username = "yy" test() return "page" # 1.请求上下文:request与session # 2.应用上下文:current_app与g:一次请求多个函数可以用它传参 def test(): print(g.username)

学习领域驱动设计(二)之上下文映射图及架构

前一篇文章 :"学习领域驱动设计开篇"给大家主要了解了下领域驱动设计是什么!这篇文章主要介绍下上下文映射图及架构相关方面的知识. 1.上下文映射图 1.1上下文映射图为何如此重要 当项目中开始采用DDD时,首先你应该为当前的项目绘制一个上下文映射图,该图主要描述当前项目中的限界上下文之间的集成关系!而上下文映射图的作用就是帮助我们从解决方案空间的角度来看待问题.(限界上下文已在上篇文章中介绍了) U表示上游(Upstream).D表示下游(Downstream) 1.2绘制上下文映射图