Python - WSGI 和 ASGI 服務器


WSGI

wiki 上的解釋

  • Web Server Gateway Interface
  • Web 服務器網關接口
  • 是為 Python 定義的 Web 服務器和 Web 應用程序或框架之間的一種簡單而通用的接口

 

WSGI 的問題

  • 隨着移動網絡的發展,Web 技術也在升級,比如 WebSocket、HTTP/2,HTTP/3
  • WSGI 應用是一個單調用、同步接口,即輸入一個請求,返回一個響應;這個模式無法支持長連接或者 WebSocket 這樣的連接
  • 即使想辦法將 WSGI 應用改成異步,還有另一個限制:一個 URL 對應一個請求,而 HTTP/2、Websocket 等在一個 URL 里會出現多個請求

 

ASGI 的背景

  • 在 Python 3.5+ 增加 async/await 特性之后,異步編程變得異常火爆
  • 但 Python 仍缺乏用於 asyncio 框架最低限度的低級服務器/應用程序接口
  • 而 ASGI 協議規范的出現填補了這一空白,這意味着現在能夠開始構建可在所有異步框架中使用的通用工具集

 

ASGI

  • Asynchronous Server Gateway Interface
  • 異步服務器網關接口
  • ASGI 是 WSGI 的繼承者,旨在提供支持異步的 Python web 服務器、框架和應用程序之間的標准接口
  • ASGI 為異步和同步應用程序提供了一個標准,繼續成為 web 服務器、框架和應用程序(如異步 python 中的 WSGI)之間的標准兼容性

 

簡單總結

  • WSGI 是為同步應用程序提供標准,不支持 WebSocket
  • ASGI 是為異步、同步應用程序提供標准,支持 WSGI 不支持當前 web 開發中的一些新的協議標准
  • ASGI 是對 WSGI 的擴展

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM