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。


分享到:


相關文章: