blog/docs/code/fastapi.md

2.7 KiB
Raw Blame History

title date categories author tags
Fast Api 2022-01-03 FastApi Anges黎梦
Fast Api

框架介绍

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请求上下文对象只能被消费一次也算一个使用上的问题

使用场景

  • 商业或者大型项目暂时不要考虑使用,稳定性不足,后续维护以及问题排查比较麻烦

  • 公司内部系统/工具使用人数较少,可以考虑使用。