别院牧志知识库 别院牧志知识库
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • Python 面试题
  • 2025 面试记录
  • 2022 面试记录
  • 2021 面试记录
  • 2020 面试记录
  • 2019 面试记录
  • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • Python 面试题
  • 2025 面试记录
  • 2022 面试记录
  • 2021 面试记录
  • 2020 面试记录
  • 2019 面试记录
  • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 辨析

  • Sockets编程

  • Django

  • stackoverflow

  • Flask

  • 全栈之路

  • 面试

    • Python 面试-基础知识篇
    • 面试经常问到的问题
    • 2019 面试记录
    • 2020 面试记录
    • 2021 面试记录
    • 2022 面试记录
    • 2023 面试记录
    • 2025 面试记录
    • redis 面试题
    • RabbitMQ 面试
    • 途游面试
    • 项目产品面试
    • Python 中 OOM(内存泄漏)问题的定位与分析
    • Flask 运行周期及工作原理
      • 如何更好地准备面试
    • 代码片段

    • 异步编程

    • 😎Awesome资源

    • PEP

    • Python工匠系列

    • 高阶知识点

    • Python 学习资源待整理
    • 设计模式

    • 好“艹蛋”的 Python 呀!
    • FIFO | 待学清单📝
    • pip 安装及使用
    • 数据分析

    • 源码阅读计划

    • OOP

    • 关于 python 中的 setup.py
    • 并行分布式框架 Celery
    • 七种武器,让你的代码提高可维护性
    • 使用 pdb 调试 Python 代码
    • 每周一个 Python 标准库
    • 🐍Python
    • 面试
    佚名
    2025-06-05
    目录

    Flask 运行周期及工作原理

    # 📦 一、Flask 的工作原理与生命周期

    Flask 是一个基于 Werkzeug WSGI 工具箱和 Jinja2 模板引擎的轻量级 Web 框架,其核心工作流程如下:

    1. 请求接收与路由分发

      • 客户端发起 HTTP 请求后,Flask 通过 WSGI 服务器(如 Gunicorn)接收请求。

      • 根据 URL 匹配路由规则(@app.route),调用对应的视图函数。若未匹配则返回 404 错误。

    2. 上下文初始化

      • 创建请求上下文(RequestContext):包含request(请求数据)和session(会话数据)。

      • 创建应用上下文(ApplicationContext):包含current_app(当前应用实例)和g(请求周期内全局变量)。

      • 通过LocalStack维护线程/协程隔离的栈结构,确保多请求数据互不干扰。

    3. 钩子函数执行

      • before_first_request:应用启动后首次请求前执行(如初始化数据库)。

      • before_request:每个请求前执行(如身份验证、限流)。

    4. 视图处理与模板渲染

      • 视图函数执行业务逻辑(如数据库操作),返回响应数据。

      • 若返回 HTML,通过 Jinja2 模板引擎渲染动态内容。

    5. 响应返回与资源清理

      • after_request:响应返回前执行(如统一响应格式处理)。

      • teardown_request:请求结束后执行(如关闭数据库连接)。

      • 销毁请求上下文和应用上下文,释放资源。

    # 💡 二、Flask 高频面试题及解析

    # ✅ 基础概念

    1. Flask 的核心特性?

      • 轻量级设计、基于 Werkzeug WSGI 和 Jinja2 模板引擎、通过扩展(如 Flask-SQLAlchemy)增强功能。
    2. Flask vs Django 的区别?

      • Flask:轻量、灵活,适合 API/小型项目,需自行设计架构。

      • Django:全栈框架,自带 ORM/Admin,适合企业级应用。

    3. 动态路由如何定义?

      @app.route('/user/<int:user_id>') 
      def show_user(user_id): 
          return f"User ID: {user_id}" 
      
      1
      2
      3

    # ⚙️ 核心机制

    1. 请求上下文 vs 应用上下文?

      • 请求上下文:封装request和session,生命周期随请求结束而销毁。

      • 应用上下文:封装app和g,贯穿应用运行期。

    2. Local 对象的作用?

      • 基于线程/协程 ID(__ident_func__)隔离数据,确保多并发请求数据安全 310。
    3. 为什么需要 LocalStack?

      • 以栈结构管理多个上下文(如嵌套蓝图),支持push()/pop()操作,实现上下文切换。
    4. Flask 如何实现request全局变量?

      • 通过LocalProxy代理模式:每次访问request.method时,动态从LocalStack栈顶获取当前请求的request对象。

    # 🛠️ 实战与优化

    1. 蓝图(Blueprint)的作用?

      • 模块化拆分应用(如按功能分路由),支持独立模板/静态文件,便于大型项目维护。
    2. 生产环境为何不用 Flask 内置服务器?

      • 单线程/进程,不支持高并发;缺乏 HTTPS、进程管理等功能。需用Gunicorn/uWSGI + Nginx部署。
    3. 如何避免 CSRF 攻击?

      • 使用Flask-WTF扩展,自动验证csrf_token:

        
        <form method="POST"> 
        {{ form.csrf_token }}  <!-- 生成隐藏字段 --> 
        </form> 
        
        1
        2
        3
        4

    # 💎 总结

    Flask 的轻量源于其模块化设计和上下文隔离机制,核心在于:

    1. 生命周期钩子(before_request/after_request)处理中间逻辑;
    2. LocalStack+LocalProxy确保多请求数据安全;
    3. 生产部署需结合 WSGI 服务器(如 Gunicorn)和反向代理(如 Nginx)。
    编辑 (opens new window)
    #Flask#Python
    上次更新: 2025-06-06, 12:41:04
    Python 中 OOM(内存泄漏)问题的定位与分析
    如何更好地准备面试

    ← Python 中 OOM(内存泄漏)问题的定位与分析 如何更好地准备面试→

    最近更新
    01
    支付系统策略模式实现代码
    06-04
    02
    Python 中 OOM(内存泄漏)问题的定位与分析
    05-30
    03
    MySQL 的 MVCC 与锁机制的关联和区别
    05-28
    更多文章>
    Theme by Vdoing | Copyright © 2019-2025 IMOYAO | 别院牧志
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式