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 伺服器將在除錯模式下啟動。

廣告

© . All rights reserved.