请求上下文和应用上下文

什么是上下文

上下文 : 相当于一个容器,保存了Flask程序运行过程中的一些信息.在计算机中,相对于进程而言,上下文就是进程执行时的环境.

Flask中有两种上下文:请求上下文和应用上下文

请求上下文(request contest)

request,和session都是请求上下文对象

request  封装了HTTP请求的内容,针对的是http请求,request对象只有在上下文的生命周期内才有效,离开了请求的生命周期,其上下文环境就不存在了

也就无法获取request对象了.

session  用来记录请求回话中的信息,针对的用户信息

应用上下文 (application context)

current_app :  表示当前运行程序文件的程序事例,可以通过current_app.name打印当前应用程序实例的名字

g : 处理请求时,用于临时储存的对象,每次请求都会重置

   1   当调用app = Flask(name)的时候,创建了程序应用对象

   2   request在每次http请求发生时,WSGI server调用Flask.call();然后在flask内部创建flask对象

   3   app的生命周期大于request和g,一个app存活期间,可能发生多次  http请求,所以会有多个request,g

   4    最终传入视图函数,通过return,redirect,和render_template生成response对象,返回给客户端

    从一个Flask App读入配置并且启动开始,就进入了App Context,在其中我们可以配置文件,打开资源文        件,通过路由规则反向URL   

请求上下文和应用上下文的区别

请求上下文:保存了客户端和服务器交互的数据

应用上下文 : 在flask程序运行的过程中,保存了一些配置信息,比如程序文件名,数据库的链接,用户信息等

问题

既然在web应用运行时,应用上下文和请求上下文都是thread local 为什么还要独立二者?

是为了能让两个以上的应用共存在WSGI应用中,这样在请求中,可以通过应用上下文来获取当前请求的应用信息

参考链接https://blog.csdn.net/Enjolras_fuu/article/details/79892961

   

猜你喜欢

转载自www.cnblogs.com/lxx7/p/10355625.html