python Web開發之 WSGI & uwsgi & uWSGI

 

首先弄清下面幾個概念:html

WSGI

全稱是 Web Server Gateway InterfaceWSGI不是服務器, python模塊,框架, API或者任何軟件,只是一種規範,描述 web server如何與 web application通訊的規範。 serverapplication的規範在 PEP 3333中有具體描述。要實現WSGI協議,必須同時實現web server和web application,當前運行在 WSGI協議之上的 web框架有 Bottle, Flask, Django
# WSGI是Web 服務器(uWSGI)與 Web 應用程序或應用框架(Django)之間的一種低級別的接口
wsgi server (好比uWSGI) 要和 wsgi application(好比django )交互,uwsgi須要將過來的請求轉給django 處理,那麼uWSGI 和 django的交互和調用就須要一個統一的規範,這個規範就是WSGI WSGI(Web Server Gateway Interface)

WSGI,全稱 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是爲 Python 語言定義的 Web 服務器和 Web 應用程序或框架之間的一種簡單而通用的接口。自從 WSGI 被開發出來之後,許多其它語言中也出現了相似接口。

WSGI 的官方定義是,the Python Web Server Gateway Interface。從名字就能夠看出來,這東西是一個Gateway,也就是網關。網關的做用就是在協議之間進行轉換。

WSGI 是做爲 Web 服務器與 Web 應用程序或應用框架之間的一種低級別的接口,以提高可移植 Web 應用開發的共同點。WSGI 是基於現存的 CGI 標準而設計的。
WSGI--更多

uwsgi

WSGI同樣是一種通訊協議,是 uWSGI服務器的獨佔協議,用於定義傳輸信息的類型( type of information),每個 uwsgi packet4byte爲傳輸信息類型的描述,與WSGI協議是兩種東西,聽說該協議是 fcgi協議的10倍快。
 

uWSGI

是一個 web服務器,實現了 WSGI協議、 uwsgi協議、 http協議等。
uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。Nginx中HttpUwsgiModule的做用是與uWSGI服務器進行交換。

WSGI協議主要包括server和application兩部分

  • WSGI server負責從客戶端接收請求,將request轉發給application,將application返回的response返回給客戶端;
  • WSGI application接收由server轉發的request,處理請求,並將處理結果返回給serverapplication中能夠包括多個棧式的中間件(middlewares),這些中間件須要同時實現server與application,所以能夠在WSGI服務器與WSGI應用之間起調節做用:對服務器來講,中間件扮演應用程序,對應用程序來講,中間件扮演服務器。

WSGI協議實際上是定義了一種serverapplication解耦的規範,便可以有多個實現WSGI server的服務器,也能夠有多個實現WSGI application的框架,那麼就能夠選擇任意的serverapplication組合實現本身的web應用。例如uWSGIGunicorn都是實現了WSGI server協議的服務器,DjangoFlask是實現了WSGI application協議的web框架,能夠根據項目實際狀況搭配使用。python

wsgi.png-22.9kB
wsgi.png-22.9kB

DjangoFlask框架都有本身實現的簡單的WSGI server,通常用於服務器調試,生產環境下建議用其餘WSGI servernginx

FastCgi協議, uwsgi協議, http協議有什麼用?

nginx 和 uWSGI交互就必須使用同一個協議,而上面說了uwsgi支持fastcgi,uwsgi,http協議,這些都是nginx支持的協議,只要你們溝通好使用哪一個協議,就能夠正常運行了。web

uwsgi是服務器和服務端應用程序的通訊協議,規定了怎麼把請求轉發給應用程序和返回django

 

# WSGI和uwsgi
https://www.jianshu.com/p/679dee0a4193
# uWSGI,WSGI和uwsgi
https://www.cnblogs.com/wspblog/p/8575101.html
更多請移步
相關文章
相關標籤/搜索