blog/docs/code/fastapi.md

65 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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