码迷,mamicode.com
首页 > 其他好文 > 详细

flask上下文

时间:2018-03-20 00:40:36      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:splay   http   number   san   flask   rap   sys   tom   内存   

Flask提供了两种上下文,一种是应用上下文(Application Context),一种是请求上下文(Request Context)。
application 指的就是当你调用app = Flask(name)创建的这个对象app;
request 指的是每次http请求发生时,WSGI server(比如gunicorn)调Flask.call()之后,在Flask对象内部创建的Request对象;
application 表示用于响应WSGI请求的应用本身,request 表示每次http请求;
application的生命周期大于request,一个application存活期间,可能发生多次http请求,所以,也就会有多个request
5
 
1
application 指的就是当你调用app = Flask(name)创建的这个对象app;
2
request 指的是每次http请求发生时,WSGI server(比如gunicorn)调Flask.call()之后,在Flask对象内部创建的Request对象;
3
application 表示用于响应WSGI请求的应用本身,request 表示每次http请求;
4
application的生命周期大于request,一个application存活期间,可能发生多次http请求,所以,也就会有多个request
5
Flask中有四种请求hook,分别是@before_first_request @before_request @after_request @teardown_request
Flask是一个基于WerkZeug实现的框架,因此Flask的App Context和Request Context是基于WerkZeug的Local Stack的实现。
这两种上下文对象类定义在flask.ctx中,ctx.push会将当前的上下文对象压栈压入flask._request_ctx_stack中,
这个_request_ctx_stack同样也是个Thread Local对象,也就是在每个线程中都不一样,上下文压入栈后,再次请求的时候都是通过_request_ctx_stack.top在栈的顶端取
,所取到的永远是属于自己线程的对象,这样不同线程之间的上下文就做到了隔离。请求结束后,线程退出,ThreadLocal本地变量也随即销毁
,然后调用ctx.pop()弹出上下文对象并回收内存。








flask上下文

标签:splay   http   number   san   flask   rap   sys   tom   内存   

原文地址:https://www.cnblogs.com/zcfx/p/8605940.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!