Vanson's Eternal Blog

Python框架Flask

Python flask.png
Published on
/2 mins read/---

Flask

Basic

生命周期

步骤描述
1客户端(如浏览器)发起 HTTP 请求
2WSGI 服务器(如 gunicorn、uWSGI)接收请求
3服务器将 HTTP 数据转换为 WSGI 环境字典(environ)
4服务器调用 Flask 应用对象(即 WSGI callable)
5Flask 内部处理:路由匹配、调用视图函数、异常处理等
6Flask 将视图函数的返回值封装为 WSGI 响应
7WSGI 服务器将响应转换为 HTTP 响应并返回
8客户端接收响应并渲染页面
浏览器

  │ HTTP GET /hello/alice


WSGI 服务器
  │ environ, start_response


Flask.__call__
  │  ↓ 创建 RequestContext

ctx.push()
  │  ↓ 绑定 request, session, g

before_request 钩子
  │  ↓ 可以中断返回

dispatch_request()
  │  ↓ 路由匹配 /hello/<name>

hello(name='alice') 视图
  │  ↓ return 'Hello alice'

make_response()
  │  ↓ str → Response

after_request 钩子
  │  ↓ 可给响应加头

session.save_session()
  │  ↓ Set-Cookie

ctx.pop()
  │  ↓ teardown_request

start_response(status, headers)


HTTP/1.1 200 OK

浏览器 ◄--------响应体
sequenceDiagram
    participant Client as 客户端
    participant Server as WSGI 服务器
    participant Flask as Flask 应用
    participant View as 视图函数
 
    Client->>Server: HTTP 请求
    Server->>Flask: 调用 app(environ, start_response)
    Flask->>Flask: 创建请求上下文
    Flask->>Flask: 路由匹配 (url_map)
    Flask->>View: 执行视图函数
    View->>Flask: 返回响应数据
    Flask->>Flask: 转换 Response 对象
    Flask->>Flask: 执行 after_request 钩子
    Flask->>Server: 返回响应
    Server->>Client: 发送 HTTP 响应
    Flask->>Flask: 销毁上下文
← Previous postPython类库Inspect
Next post →Python类库Pandas