2013-05-08 115 views
-2

現在熊我請。我會從頭開始解釋,但很簡單。 8個月前,我在一個使用python的web項目中工作,該項目不使用框架(從頭開始)。我限制自己實現視圖和模板,但隨着幾個月的過去,我變得好奇,所以我做了一些研究。Web服務器組件和Web服務器有什麼區別? - 沒有框架

現在我正在檢查WSGI以及如何製作「自己動手」的框架。但我對某些事情有點好奇。當我8個月前在這個項目中時,我們使用了一個Web服務器,但是我記得在Web上也有一個「Web服務器」組件。

該組件是Tornado Web服務器,而這個其他服務器是nginx。現在,一臺服務器和另一臺服務器有什麼區別?

如果組件(Tornado或另一個)不是我需要部署的唯一東西,我還需要什麼?

回答

2

澄清:

Tornado是一個Python Web框架和異步網絡庫。

這是他們自己的定義,不是我的。 (https://pypi.python.org/pypi/tornado

龍捲風也可以作爲網絡服務器。一些Python Web開發框架並不真正起到Web服務器的作用 - 它們需要引導到另一個庫上進行開發工作。其他人可以作爲一個Web服務器,但不建議它 - 他們的目的是編寫代碼,而不是建立它。

如果你傾向於這樣做,你可以直接從龍捲風服務。大多數人 - 包括Tornado開發團隊 - 通過將Tornado放在nginx後面,並使用nginx來負載平衡和提供靜態內容,已經看到了更好的性能。 http://www.tornadoweb.org/en/stable/overview.html?highlight=nginx

將WSGI應用程序部署到互聯網有很多不同的方法。其中一些包括:

  • 直接在port80部署應用
  • 使用nginx的/ Apache作爲公共負載均衡:
    • 代理應用程序連接的本地端口
    • 運行上運行下uwsgi應用,配置公共負載平衡器請求代理到uwsgi

還有其他的方式s部署WSGI應用程序使用gunicorn,eventlet,扭曲和無數其他網絡或Web服務庫。

要回答你的問題:

在你工作的項目,Nginx的功能作爲一個面向公衆的Web服務器。龍捲風(最有可能)既是Web框架又是私人Web服務器。

+0

是的,在我提到的項目中,他們使用龍捲風作爲網絡組件,並使用nginx進行部署。在代碼中,我基本上使用了龍捲風的請求和響應屬性,但我認爲網絡中的其他應用程序使用了其他一些功能。 感謝您的反饋意見。明確了很多東西=) – Xanathos 2013-05-08 19:26:57

1

Xanathos,您提到的組件Tornado是一個用於處理極大量同時連接的Web服務器。它建立在Twisted Python上,如果你還是初學者,我不會推薦使用它。我可能會建議你看看Python Werkzeug,因爲它會給你一個很好的WSGI介紹。

編輯: 如果你想要的東西,是一種很輕的框架,你也可能有興趣在Flask

+0

是的,我認爲自己是初學者,但我更喜歡從頭開始學習。我之前聽說過Flask,謝謝你的建議。你知道一個解釋WSGI服務器的資源,以及如何使用它們進行部署? – Xanathos 2013-05-08 18:50:58

+0

Werkzeug是一個WSGI服務器。爲什麼不從這裏開始:http://werkzeug.pocoo.org/docs/ – 2013-05-08 18:53:12

+0

好的,我會在這方面進行一些嘗試。謝謝=) – Xanathos 2013-05-08 19:22:12

1

龍捲風是由Python的Web應用程序使用的Web服務器。

nginx是一個更通用的網絡服務器,您通常使用它作爲前面的其他網絡服務器來做虛擬主機或其他代理。它主要與Apache競爭。

因此,他們都是網絡服務器,但做了完全不同的事情。

+0

龍捲風可以作爲一個Web服務器,但它確實是一個應用程序框架/網絡庫。它主要用於編寫Web應用程序,但您可以使用它編寫幾乎所有的服務器(MTA,IRC,Telnet等) 您也可以在Tornado上運行/掛載WSGI webapps,但並不真正推薦它 - 原生龍捲風應用會獲得的性能提升(http://stackoverflow.com/questions/9942188/running-a-pyramid-wsgi-application-under-tornado)。我認識的大多數人都會使用其他服務器部署WSGI應用程序 – 2013-05-08 19:46:40

相關問題