- FastAPI 教程
- FastAPI - 首頁
- FastAPI - 簡介
- FastAPI - Hello World
- FastAPI - OpenAPI
- FastAPI - Uvicorn
- FastAPI - 型別提示
- FastAPI - IDE 支援
- FastAPI - REST 架構
- FastAPI - 路徑引數
- FastAPI - 查詢引數
- FastAPI - 引數驗證
- FastAPI - Pydantic
- FastAPI - 請求體
- FastAPI - 模板
- FastAPI - 靜態檔案
- FastAPI - HTML 表單模板
- FastAPI - 訪問表單資料
- FastAPI - 上傳檔案
- FastAPI - Cookie 引數
- FastAPI - 頭部引數
- FastAPI - 響應模型
- FastAPI - 巢狀模型
- FastAPI - 依賴項
- FastAPI - CORS
- FastAPI - CRUD 操作
- FastAPI - SQL 資料庫
- FastAPI - 使用 MongoDB
- FastAPI - 使用 GraphQL
- FastAPI - WebSockets
- FastAPI - FastAPI 事件處理器
- FastAPI - 掛載子應用
- FastAPI - 中介軟體
- FastAPI - 掛載 Flask 應用
- FastAPI - 部署
- FastAPI 有用資源
- FastAPI - 快速指南
- FastAPI - 有用資源
- FastAPI - 討論
FastAPI - Uvicorn
與 Flask 框架不同,FastAPI 不包含任何內建的開發伺服器。因此,我們需要 **Uvicorn**。它實現了 **ASGI** 標準並且速度極快。ASGI 代表 **非同步伺服器閘道器介面**。
**WSGI**(Web 伺服器閘道器介面 - 舊標準)相容的 Web 伺服器不適合 **asyncio** 應用程式。實現 ASGI 規範的 Python Web 框架(如 FastAPI)提供了高速效能,與使用 Node 和 Go 構建的 Web 應用程式相當。
Uvicorn 使用 **uvloop** 和 **httptools** 庫。它還提供了對 HTTP/2 和 WebSockets 的支援,而這些是 WSGI 無法處理的。**uvloop** 類似於內建的 **asyncio** 事件迴圈。**httptools** 庫處理 http 協議。
如前所述,Uvicorn 的安裝將以最少的依賴項進行安裝。但是,標準安裝還將安裝基於 **cython** 的依賴項以及其他一些庫。
pip3 install uvicorn(standard)
這樣,**WebSockets** 協議將得到支援。此外,還將安裝 **PyYAML** 以允許您提供 .yaml 檔案。
如前所述,應用程式在 Uvicorn 伺服器上使用以下命令啟動 -
uvicorn main:app –reload
**--reload** 選項啟用除錯模式,以便 **app.py** 中的任何更改都會自動反映,並且客戶端瀏覽器上的顯示也會自動重新整理。此外,可以使用以下命令列選項 -
| 序號 | 命令及描述 |
|---|---|
| 1 | --host TEXT 將套接字繫結到此主機。[預設值 127.0.0.1] |
| 2 | --port INTEGER 將套接字繫結到此埠。[預設值 8000] |
| 3 | --uds TEXT 繫結到 UNIX 域套接字。 |
| 4 | --fd INTEGER 繫結到來自此檔案描述符的套接字。 |
| 5 | --reload 啟用自動重新載入。 |
| 6 | --reload-dir PATH 顯式設定重新載入目錄,預設為當前工作目錄。 |
| 7 | --reload-include TEXT 在監視時包含檔案。預設情況下包含 '*.py' |
| 8 | -reload-exclude TEXT 在監視檔案時排除。 |
| 9 | --reload-delay FLOAT 上次檢查和下次檢查之間延遲,預設為 0.25 |
| 10 | -loop [auto|asyncio|uvloop] 事件迴圈實現。[預設值 auto] |
| 11 | --http [auto|h11|httptools] HTTP 協議實現。[預設值 auto] |
| 12 | --interface auto|asgi|asgi|wsgi 選擇應用程式介面。[預設值 auto] |
| 13 | --env-file PATH 環境配置檔案。 |
| 14 | --log-config PATH 日誌配置檔案。支援的格式 .ini、.json、.yaml。 |
| 15 | --version 顯示 uvicorn 版本並退出。 |
| 16 | --app-dir TEXT 在指定的目錄中查詢 APP,預設為當前目錄 |
| 17 | --help 顯示此訊息並退出。 |
除了從命令列啟動 Uvicorn 伺服器之外,還可以以程式設計方式啟動它。
示例
在 Python 程式碼中,使用上面列出的任何引數呼叫 **uvicorn.run()** 方法 -
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def index():
return {"message": "Hello World"}
if __name__ == "__main__":
uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)
現在,將此 **app.py** 作為 Python 指令碼執行,如下所示 -
(fastapienv) C:\fastapienv>python app.py
因此,Uvicorn 伺服器將在除錯模式下啟動。