什麼是 WSGI?
Web Server Gateway Interface,的縮寫(Web伺服器閘道器介面),是一種協議,這個協議制定了一套規則,規定HTTP Request要如何與Application Server溝通。
- WSGI應用是一個單調用、同步接口,即輸入一個請求,返回一個響應,無法支持長連接或者WebSocket
WSGI 與 WSGI Server
可以將WSGI Server理解成處理 HTTP Request 與 Python 可理解的 Input/Output 的中繼站(Middleware)
所有支援 WSGI 協定的 Server 都可稱為 WSGI Server,現在比較常見的WSGI Server是gunicorn及 uwsgi。
什麼是 ASGI?
- Asynchronous Server Gateway Interface(異步服務器網關接口)
- ASGI 是 WSGI 的繼承者,已經存在的WSGI應用可以直接在ASGI服務器中運行
- ASGI 代表異步服務器網關接口,是爲異步、同步應用程序提供標準,支持 WSGI 不支持當前 web 開發中的一些新的協議標準
- 介於網絡協議服務和Python應用之間的標準接口,能夠處理多種通用的協議類型,包括HTTP,HTTP2和WebSocket。
總結: WSGI 與 ASGI
- 相同之處:
- WSGI 與 ASGI都指定接口並位於 Web 服務器和 Python Web 應用程序或框架之間。
- 兩者的區別:
- WSGI是基於HTTP協議模式的,不支持WebSocket
- ASGI的誕生則是為了解決Python常用的WSGI不支持當前Web開發中的一些新的協議標準。
- ASGI對於WSGI原有的模式的支持和WebSocket的擴展,即ASGI是WSGI的擴展。