赞
踩
最近发现一个很nice的python web框架!
官方介绍是:
FastAPI是一种现代,快速(高性能)的Web框架,用于基于标准
Python类型提示使用Python 3.6+构建API。
主要功能是(官方内容):
快速: 非常高的性能,看齐的NodeJS和GO,现有最快的Python框架之一。
快速编码: 将功能开发速度提高约200%至300%。
更少的错误: 减少约40%的人为错误(开发人员)。直观:强大的编辑器支持。完成无处不在。调试时间更少。
简易: 旨在易于使用和学习。减少阅读文档的时间。 短:最小化代码重复。每个参数声明中的多个功能。更少的错误。
健壮: 获取可用于生产的代码。具有自动交互式文档。
基于标准: 基于(并完全兼容)API的开放标准:OpenAPI(以前称为Swagger)和JSON Schema。
基于以下第三方包开发(部分):
1、 Starlette基于ASGI异步网关协议接口的框架 。
2、 Pydantic数据验证和设置管理库。
3、 Uvicorn基于 asyncio(异步io) 开发的一个轻量级高效的 web 服务器框架。
4、 Requests HTTP库。
5、 Aiofiles 如果要使用FileResponse(文件相应)静态文件。
6、 Jinja2 网页模板渲染引擎。
7、 Python-multipart 表单解析。
https://github.com/tiangolo/fastapi
据说是最快的异步并发框架,
(B站学习网址https://www.bilibili.com/video/av93282315)
可以媲美NodeJS和GO,这就厉害了!之前GO火就是因为并发牛,很多PYTHON开发转GO也是因为这个,所以专门找了一下发现有位叫“梦想做小猿”的老哥做了测试。
下面是某老哥测试结果(用的是webbench测试工具):
从结果里面看,虽然比GO慢了点,但是已经非常不错了,官方也给出了测试结果:
**我也做了测试,**但是我发现结果远远不如这位老哥,原因如下:1、我用的是win10开发FastAPI,所以win10做服务器真是太辣眼睛了
2、我用的是自带的run方法,这根本谈不上并发和部署,所以也不行。
3、Flask的测试,run方法的服务,肯定也是不理想。
所以上面这个测试结果也只能参考,并不严谨!
此外,学习了一晚上,有以下个人总结:
1、它的代码编写习惯和Flask很相似。熟悉Flask的小伙伴上手会很快。
2、官网的帮助还是非常棒的,逻辑好,够分量,够仔细。
3、用了不少当前许多优秀的PYTHON模块,作者真心牛。
4、目前比较新,学习教程基本没有,B站有个油管翻译,但是机翻太糟糕了,还不如原版。
5、目前还没到正式版,但0.4.0版本就已经在Github得到9.7k+ star 。
方法:
pip install fastapi[all]
是的,需要安装两个包,fastapi和uvicorn。
官方教程是通过一个main.py文件然后CMD通过‘uvicorn main:app --reload’启动,个人觉得麻烦不推荐,直接用下面的方法。
因为我们已经安装了uvicorn,所以通过它来启动才是正确的打开方式,同时,配合pycharm:
main.py文件:
# -*- coding: UTF-8 -*-
from fastapi import FastAPI
import uvicorn as u
app = FastAPI(debug=True)
@app.get("/")
async def root():
return {"message": "Helloworld,FastAPI"}
if __name__ == '__main__':
u.run(app)
然后直接Ctrl+Shift+F10从Pycharm直接启动:
直接点击超链接:
(小吐槽一下Flask,萌新的我当初在用Flask的时候,常常莫名其妙报错,有坑!这个FastAPI貌似目前还没啥坑,看过几位前辈的使用感受,貌似也这么觉得。)
此外,还有个特色功能,比较实用。
http://127.0.0.1:8000/docs
进入 交互式API文档 ,Interactive API docs 。
http://127.0.0.1:8000/redoc
进入 替代API文档 ,Alternative API docs。
最后,感谢这位老哥。FastAPI作者,Sebastián Ramírez,德国柏林。
(由于没有什么教程,所以我通过官网给的教程进行学习)
官网教程地址https://fastapi.tiangolo.com/tutorial/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。