Python Falcon - Uvicorn



Uvicorn 使用了 **uvloop** 和 **httptools** 庫。它還提供了對 HTTP/2 和 WebSockets 的支援,而這些是 WSGI 無法處理的。**uvloop** 類似於內建的 **asyncio** 事件迴圈。**httptools** 庫處理 http 協議。

Falcon 的 ASGI 相容應用程式在 Uvicorn 伺服器上啟動,使用以下命令:

Uvicorn hellofalcon:app – reload

**--reload** 選項啟用除錯模式,以便 app.py 中的任何更改都會自動反映到客戶端瀏覽器上並自動重新整理顯示。此外,還可以使用以下命令列選項:

--host TEXT 將套接字繫結到此主機。[預設 127.0.0.1]
--port INTEGER 將套接字繫結到此埠。[預設 8000]
--uds TEXT 繫結到 UNIX 域套接字。
--fd INTEGER 繫結到來自此檔案描述符的套接字。
--reload 啟用自動重新載入。
--reload-dir PATH 顯式設定重新載入目錄,預設為當前工作目錄。
--reload-include TEXT 在監視時包含檔案。預設情況下包含 '*.py'
--reload-exclude TEXT 在監視檔案時排除。
--reload-delay FLOAT 上次檢查和下次檢查之間延遲,預設為 0.25
--loop [auto|asyncio|uvloop] 事件迴圈實現。[預設 auto]
--http [auto|h11|httptools] HTTP 協議實現。[預設 auto]
--interface auto|asgi|wsgi 選擇應用程式介面。[預設 auto]
--env-file PATH 環境配置檔案。
--log-config PATH 日誌配置檔案。支援的格式為 **.ini, .json, .yaml。**
--version 顯示 Uvicorn 版本並退出。
--app-dir TEXT 在指定的目錄中查詢 APP,預設為當前目錄
--help 顯示此訊息並退出。

Uvicorn 伺服器也可以從程式內部啟動,而不是使用上述命令列。為此,匯入 **uvicorn** 模組並呼叫 **uvicorn.run()** 方法,如下所示:

import uvicorn
if __name__ == "__main__":
   uvicorn.run("hellofalcon:app", host="0.0.0.0", port=8000, reload=True)

相應地更改 hellofalcon.py 程式碼,並從命令提示符處執行。結果可以透過 curl 命令或瀏覽器驗證,如前所述。

廣告

© . All rights reserved.