python flask源码解析_Flask框架整个流程源码解读

Flask框架整个流程源码解读

一.总的流程

运行Flask其本质是运行Flask对象中的__call__,而__call__本质调用wsgi_app的方法

wsgi_app方法

def wsgi_app(self, environ, start_response):

#1.ctx是ResquestContext的对象,里面request

ctx = self.request_context(environ)

error = None

try:

try:

#2.就是ctx放到了Local对象

ctx.push()

#3.所有请求的执行函数的,包括请求扩展,真正的视图函数

response = self.full_dispatch_request()

except Exception as e:

error = e

response = self.handle_exception(e)

except: # noqa: B001

error = sys.exc_info()[1]

raise

#3. 请求之后的函数

return response(environ, start_response)

finally:

if self.should_ignore_error(error):

error = None

#4.最后把对应的request在request的队列中删除

ctx.auto_pop(error)

二.具体流程

1.ctx = self.request_context(environ) environ

请求相关的,ctx现在是包含request,session的RequestContext的对象

源码

1.1RequestContext(self, environ) self ,是app对象 environ,请求相关的

1.2 RequestContext在实例化的时候的源码:

def __init__(self, app, environ, request=None, session=None):

self.app = app

if request is None:

request = app.request_class(environ)

self.request = request

self.u

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值