FastAPI,最快的Python web框架之一


FastAPI,最快的Python web框架之一

前言

Python3.6增加了 await 和 async的异步功能。FastAPI是一种现代,快速(高性能)的Web框架,用于基于标准Python类型提示使用Python 3.6+构建API。我看中的该框架的厉害之处,就是,其性能能与Node相匹配,甚至在某种情况下可以与Golang相媲美。

初识FastAPI

主要功能是:

  • 快速:非常高的性能,看齐的NodeJSgo(基于Starlette和Pydantic)。现有最快的Python框架之一。
  • 快速编码:将功能开发速度提高约200%至300%*。
  • 更少的错误:减少约40%的人为错误(开发人员)。*
  • 直观:强大的编辑器支持。完成无处不在。调试时间更少。
  • 简易:旨在易于使用和学习。减少阅读文档的时间。
  • 精简:最小化代码重复。每个参数声明中的多个功能。更少的错误。
  • 健壮:获取可用于生产的代码。具有自动交互式文档。
  • 基于标准:基于(并完全兼容)API的开放标准:OpenAPI(以前称为Swagger)和JSON Schema。自带接口文档:目前有两个接口文档Swagger UI和 ReDoc

小试牛刀

话不多说,写一个接口看看是什么样子的

<code>依赖环境: Python3.6+
安装模块:
pip install fastapi
pip install uvicorn/<code>

创建一个项目 fastapi_pro

创建一个main.py的文件

<code>from fastapi import FastAPI 


app = FastAPI()

@app.get("/")
async def read_root():
return {"Hello": "World"}


@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}/<code>

运行项目

<code>uvicorn main:app --reload/<code>

命令uvicorn main:app --reload指的是:
main:main.py文件

app:app = FastAPI() 在main.py内创建的对象。

--reload:在代码更改后重新启动服务器。 只有在开发时才使用这个参数。

访问接口

的浏览器打开网址:http://127.0.0.1:8000

你将看见json格式的响应数据:

FastAPI,最快的Python web框架之一

访问文档

现在进入 http://127.0.0.1:8000/docs.

你将会看见自动的交互式API文档,该文档由Swagger UI提供

FastAPI,最快的Python web框架之一

并发测试来一波

压测工具: webbench

FastAPI: 1000并发 30秒

FastAPI,最快的Python web框架之一

Flask: 1000并发 30秒

FastAPI,最快的Python web框架之一

Golang: 1000并发 30秒

FastAPI,最快的Python web框架之一

从结果来看,Flask是Python框架中公认并发速度比较快的,FastAPI并发性能大于 Flask, 稍微弱于Golang。


分享到:


相關文章: