文章目錄
- 什么是uvicorn
- Uvicorn 和 uWSGI 對比區別
- 安裝 Uvicorn
- 使用示例
什么是uvicorn
官網https://www.uvicorn.org/
Uvicorn 是一個用于 Python 的 ASGI Web 服務器實現。
Until recently Python has lacked a minimal low-level server/application interface for async frameworks. The ASGI specification fills this gap, and means we’re now able to start building a common set of tooling usable across all async frameworks.
直到最近,Python 還缺少一個用于異步框架的最小底層服務器/應用程序接口。ASGI 規范 填補了這一空白,這意味著我們現在能夠開始構建一組可在所有異步框架中使用的通用工具。
Uvicorn currently supports HTTP/1.1 and WebSockets.
Uvicorn 目前支持 HTTP/1.1 和 WebSockets。
Uvicorn 只有少量的核心依賴,這使它比其他Web 伺服器(如uWSGI)更輕量。 Uvicorn 也能輕鬆與Docker、Kubernetes 等容器技術整合,這對於需要快速部署的開發團隊來說,是一個很大的優勢。
Uvicorn 是由 Starlette 框架的作者編寫的 ASGI 服務器,旨在提供高性能的異步請求處理能力。它使用 asyncio 庫實現異步 I/O 操作,支持 HTTP 和 WebSocket 協議,可與各種 ASGI 應用程序框架(如 FastAPI、Django、Starlette 等)配合使用。
Uvicorn 和 uWSGI 對比區別
- 如果您的應用是以異步方式構建(如使用 FastAPI),并且您需要快速開發和測試,可以選擇 Uvicorn。
- 如果您在生產環境中使用傳統的 WSGI 應用程序,并且希望利用多進程管理和其他高級特性,可以選擇 uWSGI,尤其是在需要與 Nginx 等 Web 服務器集成時。
安裝 Uvicorn
pip install uvicorn
使用示例
下面是一個簡單的示例,演示了如何使用 Uvicorn 啟動一個異步 Web 服務:
# main.pyfrom fastapi import FastAPIapp = FastAPI()@app.get("/")
async def read_root():return {"message": "Hello, World!"}
保存以上代碼到 main.py 文件中。然后,在命令行中執行以下命令:
uvicorn main:app --reload
這將啟動一個名為 main 的 ASGI 應用程序,使用 Uvicorn 服務器運行在本地主機的默認端口 8000 上,并監聽根路徑 / 的 GET 請求。在瀏覽器中訪問 http://localhost:8000,將看到 “Hello, World!” 的消息。