FastAPI生命周期

FastAPI是一个基于Starlette和Pydantic的高性能Pythonweb框架,提供快速开发、低bug率、智能编辑支持和标准化API设计。它利用ASGI和Uvicorn实现异步并发,结合Pydantic的数据处理能力,简化API开发过程。
摘要由CSDN通过智能技术生成

​FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。Starlette 构建 web 服务。

关键特性:

  • 快速:可与 NodeJSGo 并肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一
  • 高效编码:提高功能开发速度约 200% 至 300%。*
  • 更少 bug:减少约 40% 的人为(开发者)导致错误。*
  • 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
  • 简单:设计的易于使用和学习,阅读文档的时间更短。
  • 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
  • 健壮:生产可用级别的代码。还有自动生成的交互式文档。
  • 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema

依赖

Python 3.6 及更高版本

FastAPI 站在以下巨人的肩膀之上:

FastAPI 为什么使用 Starlette 作为基础框架?

FastAPI 使用 Starlette 作为其基础框架,主要是因为 Starlette 是一个现代化的 ASGI 框架,专注于高性能和可扩展性。与传统的 Web 框架相比,ASGI(异步服务器网关接口)允许异步处理 HTTP 请求,从而提高了应用程序的性能。

Starlette 提供了一些高级功能,如 WebSocket 支持、请求和响应对象的构建以及中间件支持等,这些功能都可以轻松地集成到 FastAPI 中。此外,Starlette 还提供了一些可插拔的组件,如模板引擎、安全性功能和跨域资源共享等,使得开发者可以根据不同的需求来选择自己需要的组件进行集成。

FastAPI 借助于 Starlette 的所有这些功能特性,使得其具有出色的性能和灵活性,并且易于使用和扩展。

FastAPI为什么使用Pydantic做数据处理?

FastAPI 使用 Pydantic 作为其数据验证库,主要是因为 Pydantic 是一个高度可扩展的数据序列化和验证库,可以帮助开发者轻松地验证输入数据,并将其转换为 Python 对象。

Pydantic 具有以下优点:

快速且易于使用:通过使用类型提示、注解和默认值,可以快速定义数据模型;
高度可扩展:可以自定义验证逻辑、编写自己的字段类型和转换器;
支持异步验证:可以在异步 API 中使用,而不会阻塞事件循环;
支持从 JSON、YAML 和其他格式中加载数据:可以轻松地从各种不同来源加载数据;
易于集成:可以直接与 FastAPI 集成,使得请求数据的验证和处理变得非常简单。
因此,使用 Pydantic 作为 FastAPI 的数据验证库,可以帮助开发人员更轻松地定义数据模型、验证请求数据并构建类型安全的 API。

并发和并行

异步有时候也叫做并发。并发(Concurrency)和并行(parallelism)是不同的概念,并发是指一个处理器同时处理多个任务,并行是指多个处理器同时处理多个不同的任务,并发是逻辑上的同时发生,并行是物理上的同时发生。

FastAPI 既支持异步并发,也支持多线程并行。

async 和 await

异步并发使用 async 和 await 来实现。

FastAPI 的请求生命周期

ASGI是 异步服务器网关接口,介于网络协议和 python 应用之间的标准接口,能够处理多种通用的协议类型

FastAPI 使用 Uvicorn 来启动服务,Uvicorn 是 Python 的 ASGI web 服务器实现。

直到最近,Python 还缺乏用于异步框架的最低层次的服务器/应用程序接口。ASGI 规范填补了这一空白,这意味着我们现在能够开始构建一套可跨所有异步框架使用的通用工具。

Uvicorn 目前支持 HTTP/1.1 和 WebSockets。

Uvicorn 基于 uvloop 和 httptools 构建的非常快速的 ASGI 服务器,uvloop 是 asyncio 的优秀替代。实现异步任务。

下图是 FastAPI 完整的请求生命周期

FastAPI请求生命周期.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值