app.wsgi_app 是Flask实例的入口,Flask从这里接受数据,返回处理后的数据。
1 | class _RequestContext(object): |
目前只看了dispatch_request后面的路径,session等都是在这里开始的。
大致的路径是:
- 获取环境变量;
- 根据环境变量创建
_RequestContext实例; - 根据环境变量创建
MapAdapter实例;
4._request_ctx_stack顶部增加一个_RequestContext实例; - 执行
preprocess_request,before_request等函数在这里面被执行; - 如果
preprocess_request没有返回值,则开始调用dispatch_request,进行正常的path解析和view_func调用等; - 而如果有返回值,则把该返回值进行返回, 而不再进行正常的
dispatch_request; _request_ctx_stack顶部移除_RequestContext实例。