--- title: Fast Api date: 2022-01-03 categories: FastApi author: Anges黎梦 tags: - Fast Api --- [comment]: <> (![](https://fastapi.tiangolo.com/img/logo-margin/logo-teal.png)) ## 框架介绍 **FastAPI 框架,高性能,易于学习,高效编码,生产需谨慎** --- 官方文档: [https://fastapi.tiangolo.com](https://fastapi.tiangolo.com) 源码: [https://github.com/tiangolo/fastapi](https://github.com/tiangolo/fastapi) --- FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。 **关键特性:** - 快速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。 - 高效编码:提高功能开发速度约 200% 至 300%。* - 更少 bug:减少约 40% 的人为(开发者)导致错误。* - 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。 - 简单:设计的易于使用和学习,阅读文档的时间更短。 - 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。 - 健壮:生产可用级别的代码。还有自动生成的交互式文档。 - 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。 ## 框架现存问题整理 > 来源:网络以及实际使用 - Python语言异步生态并不完善 在不完善的生态下,使用异步来进行开发,就要做好解决相关问题的准备。 - 论fastapi的异步生态和组件库,并不像flask/django那样有丰富而稳定的生态 - 扩展库还并不完善,很多想法都需要自己去实现 - fastapi也不是相对稳定,还有bug和一些设计上的不方便项 - 异步orm生态仍然是伤,不管是sqlalchemy session的依赖注入,还是用databases异步excute,总感觉哪里有些奇怪 - 关于后台和定时任务,仍然需要等celery和apscheduler的表现 - 很多人其实并不是很了解异步,就开始使用框架上的异步相关内容,这样其实是不好的,对后续的维护的排查,都有很大的影响 - 中间件相关的设计略坑,尤其是涉及很多异步的对象和组件很容易造成线程锁死 - 异步相关也有一个很大的问题,在某种特定的情况下,可以直接打爆内存使用率,也算一个严重的问题 - Request请求上下文对象只能被消费一次也算一个使用上的问题 ## 使用场景 - 商业或者大型项目暂时不要考虑使用,稳定性不足,后续维护以及问题排查比较麻烦 - 公司内部系统/工具使用人数较少,可以考虑使用。