2.7 KiB
| title | date | categories | author | tags | |
|---|---|---|---|---|---|
| Fast Api | 2022-01-03 | FastApi | Anges黎梦 |
|
框架介绍
FastAPI 框架,高性能,易于学习,高效编码,生产需谨慎
官方文档: https://fastapi.tiangolo.com
源码: 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请求上下文对象只能被消费一次也算一个使用上的问题
使用场景
-
商业或者大型项目暂时不要考虑使用,稳定性不足,后续维护以及问题排查比较麻烦
-
公司内部系统/工具使用人数较少,可以考虑使用。