Uvicorn:Python 的高效能 ASGI 伺服器
Uvicorn 是使用 uvloop 和 httptools 建構的閃電般快速的非同步伺服器閘道介面 (ASGI) 伺服器。 其輕量級設計和高效的基於非同步的架構使其成為現代 Python Web 應用程式的熱門選擇。
關鍵組件與功能:
Uvloop 和 Httptools: Uvicorn 利用 uvloop(一種基於 Cython 的事件循環替代 asyncio),提供顯著的性能提升(2-4 倍)。 Httptools,Node.js HTTP 解析器的 Python 實現,進一步提高了效率。
ASGI 相容性: Uvicorn 遵循 ASGI 標準,能夠與各種非同步 Python 框架無縫整合。 它支援 HTTP、WebSockets 和 Pub/Sub 廣播,並具有未來協議擴展的潛力。 (ASGI規範:https://www.php.cn/link/bdd1b613ee6fcac7694cf648430358ce)
為什麼 ASGI 很重要: ASGI 解決了先前 Python 中缺乏標準化非同步網關介面的問題。這個通用標準允許跨非同步框架的互通性,從而提高 Python 在高效能 Web 開發方面與 Node.js 和 Golang 的競爭力。 至關重要的是,ASGI 對 HTTP/2 和 WebSockets 的支援比舊的 WSGI 標準具有優勢。
使用 Uvicorn:
安裝: pip install uvicorn
範例應用程式(example.py):
<code class="language-python">async def app(scope, receive, send): assert scope['type'] == 'http' await send({ 'type': 'http.response.start', 'status': 200, 'headers': [ [b'content-type', b'text/plain'], ] }) await send({ 'type': 'http.response.body', 'body': b'Hello, world!', })</code>
奔跑的獨角獸:
uvicorn example:app
<code class="language-python">import uvicorn async def app(scope, receive, send): # ... application code ... if __name__ == "__main__": uvicorn.run("example:app", host="127.0.0.1", port=8000, log_level="info")</code>
Uvicorn 提供廣泛的命令列選項(使用 uvicorn --help
檢視)。
進階用法(設定和伺服器實例):要進行更細緻的控制,請利用 uvicorn.Config
和 uvicorn.Server
進行設定和生命週期管理。 原文中提供了一個範例。
FastAPI 整合:FastAPI 是一個現代的高效能 Web 框架,由於其速度、可靠性以及對 WebSockets 和 HTTP/2 等現代功能的支持,它使用 Uvicorn 作為其預設伺服器。 原文中也包含了一個使用 Uvicorn 的簡單 FastAPI 範例。
為什麼 FastAPI 選擇 Uvicorn:FastAPI 對 Uvicorn 的依賴是策略性的。 Uvicorn的非同步能力完美補充了FastAPI面向效能的設計,使其能夠高效可靠地處理高並發。
Leapcell 被認為是部署 FastAPI 應用程式的理想平台,提供:
更多資訊請參考Leapcell文件和Twitter(https://www.php.cn/link/7884effb9452a6d7a7a79499ef854afd)。
以上是FastAPI Uvicorn = 驚人的速度:炒作背後的技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!