![FastAPI,最快的Python web框架之一](http://p2.ttnews.xyz/loading.gif)
前言
Python3.6增加了 await 和 async的異步功能。FastAPI是一種現代,快速(高性能)的Web框架,用於基於標準Python類型提示使用Python 3.6+構建API。我看中的該框架的厲害之處,就是,其性能能與Node相匹配,甚至在某種情況下可以與Golang相媲美。
初識FastAPI
主要功能是:
- 快速:非常高的性能,看齊的NodeJS和go(基於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://p2.ttnews.xyz/loading.gif)
訪問文檔
現在進入 http://127.0.0.1:8000/docs.
你將會看見自動的交互式API文檔,該文檔由Swagger UI提供
併發測試來一波
壓測工具: webbench
FastAPI: 1000併發 30秒
Flask: 1000併發 30秒
Golang: 1000併發 30秒
從結果來看,Flask是Python框架中公認併發速度比較快的,FastAPI併發性能大於 Flask, 稍微弱於Golang。
閱讀更多 芝麻觀 的文章