图为从flask中运行hello world的调用栈。
启动流程
run()这个方法的内容非常简单:处理一下参数,然后调用 werkzeug 的 run_simple。需要注意的是:run_simple 的第三个参数是 self,也就是创建的 Flask() application。
self.dispatch_request() 返回的是处理函数的返回结果(比如
hello world 例子中返回的字符串),finalize_request 会把它转换成 Response 对象。
在 dispatch_request 之前我们看到 preprocess_request,之后看到 finalize_request,它们里面包括了请求处理之前和处理之后的很多
hooks 。这些 hooks 包括:
- 第一次请求处理之前的 hook 函数,通过
before_first_request定义 - 每个请求处理之前的 hook 函数,通过
before_request定义 - 每个请求正常处理之后的 hook 函数,通过
after_request定义 - 不管请求是否异常都要执行的
teardown_requesthook 函数