65 lines
2.7 KiB
Markdown
65 lines
2.7 KiB
Markdown
---
|
||
title: Fast Api
|
||
date: 2022-01-03
|
||
categories: FastApi
|
||
author: Anges黎梦
|
||
tags:
|
||
- Fast Api
|
||
---
|
||
|
||
[comment]: <> ()
|
||
|
||
## 框架介绍
|
||
|
||
**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请求上下文对象只能被消费一次也算一个使用上的问题
|
||
|
||
## 使用场景
|
||
|
||
- 商业或者大型项目暂时不要考虑使用,稳定性不足,后续维护以及问题排查比较麻烦
|
||
|
||
- 公司内部系统/工具使用人数较少,可以考虑使用。
|