2014-01-11 123 views
9

我是Python新手,我無法理解Python中的服務器概念。WSGI實用程序和Web服務器之間的區別

一切是什麼WSGI首先,什麼是的wsgirefWERKZEUG以及他們如何從CherryPy的WSGI服務器,Gunicorn,龍捲風(通過wsgi.WSGIContainer HTTP服務器),網絡雙絞線,uWSGI,女服務員不同WSGI服務器。

如果我需要從頭開發Web應用程序,我的意思是從頭開始,我應該從哪裏開始,我的公司需要定製框架,並且應用程序基於關鍵性能開銷。

請幫助並解釋它們是如何不同的。

P.S我不是編程的初學者。

+0

wsgi是web-server和python之間的接口。任何符合WSGI的應用程序都可以與任何具有WSGI驅動程序的服務器一起運行。它還使您能夠在Web服務器和應用程序之間放置中間件,例如可以處理路由,會話管理,緩存等。 – Thayne

回答

7

WSGI僅僅是一套規則來幫助統一和標準化Python應用程序與Web服務器的通信方式。它定義了應用程序應該如何發送響應以及服務器應如何與應用程序進行通信並傳遞有關請求的環境和其他詳細信息。任何需要與任何Web服務器通信的應用程序都會實現WSGI,因爲它實際上是Python的標準和推薦方法。 WSGI開始統一其他實現(CGI,mod_python,FastCGI)。

wsgiref是參考實現的WSGI接口。它就像幫助開發人員瞭解如何在自己的應用程序中實現WSGI的藍圖。

您提到的其他內容是實現WSGI標準的所有不同應用程序;但有一些例外:

  1. Twisted是一個庫,用於創建可通過網絡進行通信的應用程序。 任何種類的網絡,以及任何類型的應用程序。它不僅限於網絡。

  2. Tornado與Twisted類似,它也是一個網絡通信庫;但它是專爲非阻塞應用程序。需要長時間連接服務器的東西(比如說,一個顯示實時提要的應用程序)。

  3. CherryPy是一個用於創建Web應用程序的極小Python框架。它執行 WSGI。

  4. Werkzeug是一個實現WSGI的庫。所以,如果你正在開發一個需要講WSGI的應用程序,你會導入werkzeug,因爲它提供了你需要的WSGI的各個部分。

  5. uWSGI是一個允許輕鬆託管多個Web應用程序的項目。它作爲名稱中的WSGI是因爲WSGI是與應用程序一起發佈的第一個插件。這可能是這個列表中的奇怪之處,因爲它不是一個開發框架,而更像是一種管理多個Web應用程序的方式。

    實現 WSGI

Web服務器可以傾訴也實現WSGI的任何應用程序。modwsgi是Web服務器的WSGI的流行實現;它可用於Apache和Nginx,IIS可用於isapi wsgi module

+1

因此,Wsgiref是WSGI的參考實現,因此我們可以從中創建自己的框架。 對不對? – ajkumar25

+0

是的,但使用像werkzeug這樣更加「用戶友好」的工具集會容易得多。 –

相關問題