一. 概念对比
| 方面 | 请求上下文 (Request Context) | 应用上下文 (Application Context) |
|---|---|---|
| 用途 | 存储请求相关的数据 | 存储应用相关的数据 |
| 生命周期 | 一个请求开始到结束 | 一个请求开始到结束(与应用实例生命周期不同) |
| 主要对象 | request, session | current_app, g |
| 创建时机 | 请求进入时自动创建 | 请求进入时自动创建 |
二. 详细解析

应用上下文放在名为_app_ctx_stack的栈中,栈中元素是AppContext对象。其中current_app指向栈顶元素。
请求上下文放在名为_request_ctx_stack的栈中,栈中元素是RequestContext对象。其中request指向栈顶元素。
注:
RequestContext对象入栈时,如果_app_ctx_stack栈中没有AppContext对象,会把当前应用中的AppContext对象入栈