当前位置: 首页 > news >正文

【python】FastAPI简介

1. FastAPI 简介

FastAPI 是一个基于 Python 3.7+ 的现代 Web 框架,用于快速开发高性能 API。它的设计目标是 高性能、易用性、自动化文档生成,在 Web 后端和微服务场景中非常流行。

在这里插入图片描述

主要特点

  • 高性能:基于 ASGI 架构,性能接近 Node.js 和 Go。
  • 自动文档:内置 Swagger UI / ReDoc。
  • 数据校验:依赖 Pydantic,自动进行 JSON 转换与验证。
  • 异步支持:原生支持 async/await,适合高并发。
  • 开发效率高:充分利用 Python 类型提示,IDE 体验优异。

2. FastAPI 为什么快?核心原理

FastAPI 的高性能来自以下几个方面:

  1. ASGI 架构

    • 基于 Starlette,支持异步 I/O。
    • 类似 Node.js 的事件循环,一个进程可处理成千上万个请求。
  2. Pydantic 加速

    • 使用类型注解定义数据模型,自动完成数据校验。
    • 内部大量基于 Cython 优化,JSON 解析和数据转换速度快。
  3. Uvicorn 服务器

    • 基于 uvloop(Cython 实现的事件循环)和 httptools(C 语言 HTTP 解析器)。
    • 请求处理效率远高于 Flask/Django 的 WSGI。
  4. 高效路由

    • Starlette 路由系统采用高效匹配算法(Trie-like),比正则匹配更快。
  5. 启动时预编译

    • 路由和文档在启动阶段就生成,运行时无需额外开销。

3. Uvicorn 简介与用法

Uvicorn 是一个 ASGI 服务器,通常与 FastAPI 搭配使用。

常用命令

uvicorn main:app --reload --host 0.0.0.0 --port 8000

参数解释:

  • main:app:模块名:FastAPI 实例。
  • --reload:开发环境热重载。
  • --workers 4:生产环境启动 4 个并发进程。

生产部署

在生产环境中推荐:

uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4

或者配合 Gunicorn

gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000

4. Gunicorn 简介

Gunicorn(Green Unicorn) 是一个 Python WSGI HTTP 服务器,常用于部署 Flask、Django 应用。

核心特点

  • 多进程模型(pre-fork),master/worker 架构。
  • 稳定、成熟,广泛应用于生产环境。
  • 支持多种 worker 类型(同步、异步、gevent、eventlet)。

常用命令

gunicorn app:app -w 4 -b 0.0.0.0:8000

与 FastAPI 搭配

Gunicorn 可作为进程管理工具,结合 Uvicorn Worker 使用:

gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000

5. WSGI 与 ASGI

在 Python Web 应用中,WSGI 与 ASGI 是两个关键的接口标准

全称

  • WSGI:Web Server Gateway Interface(Web 服务器网关接口)
  • ASGI:Asynchronous Server Gateway Interface(异步服务器网关接口)

区别对比

特性WSGIASGI
协议年代早期(PEP 3333)新一代(PEP 4843)
并发模式同步同步 + 异步
支持的功能HTTP 请求HTTP、WebSocket、长连接、HTTP/2
适用框架Flask、Django(早期)FastAPI、Starlette、Django 3.0+
性能瓶颈阻塞,难以支撑高并发原生异步,适合高并发

6. 总结

  • FastAPI:现代高性能 Web 框架,基于 ASGI,特点是快、简洁、文档自动化。
  • Uvicorn:运行 FastAPI 的 ASGI 服务器,轻量高效。
  • Gunicorn:经典 WSGI 服务器,可作为进程管理工具,与 Uvicorn Worker 搭配使用。
  • WSGI vs ASGI:WSGI 是老一代同步协议,ASGI 是新一代异步协议,FastAPI 正是依赖 ASGI 才能高性能。

✅ 在生产环境中,最佳实践通常是:
Nginx → Gunicorn(进程管理) → Uvicorn(ASGI 运行) → FastAPI 应用

http://www.dtcms.com/a/395289.html

相关文章:

  • IDEA lombok注解无效的问题,运行时提示java: 找不到符号或者方法
  • Windows 系统部署 Kronos 金融 K 线基础模型——基于 EPGF 架构
  • 010 Rust流程控制
  • MyBatisPlus快速入门:简化CRUD操作
  • 网络编程套接字(三)---简单的TCP网络程序
  • 背景建模(基于视频,超炫)项目实战!
  • ios26版本回退到ios18
  • OpenCV直方图比较:原理与四种方法详解
  • OpenCV - 图像金字塔
  • 寄存柜频繁维护还卡顿?杰和IB2-281主板:智能化升级高效省心
  • 海外短剧系统开发:多语言适配与跨地区部署的架构实践
  • JVM内存模型详解:看内存公寓如何分配“房间“
  • 【论文阅读】4D-VLA:时空视觉-语言-动作预训练与跨场景校准
  • 【论文阅读】MDM : HUMAN MOTION DIFFUSION MODEL
  • 【论文阅读】RynnVLA-001:利用人类示范改进机器人操作
  • Leecode hot100 - 105.从前序与中序遍历序列构造二叉树
  • 联邦学习论文分享:Federated Learning with GAN-based Data Synthesis for Non-IID Clients
  • 绕过百度网盘无限制下载
  • 【自记】PyCharm 更换阿里云国内源教程
  • 【Axure原型分享】区间K线图
  • javascript之Es6八股文
  • npm和pnpm命令大全
  • kali下安装beef-xss报错-启动失败-简单详细
  • 政策法规下的LLM安全:合规之路
  • 《第21课——C typedef:从Java的“实名制”到C的“马甲生成器”——类型伪装术与代码整容的艺术》
  • 【每天一个知识点】什么是知识库?
  • 豆包·Seedream 4.0深度测评:4K多模态时代的图像创作革命(图文增强版)
  • [新启航]发动机喷管推进剂输送孔光学 3D 轮廓测量 - 激光频率梳 3D 轮廓技术
  • 深入理解 TCP 协议:三次握手与四次挥手的底层原理
  • PyTorch 神经网络工具箱