2016-05-03 620 views
8

official doc說:Werkzeug究竟是什麼?

WERKZEUG是一個用於Python的WSGI實用工具庫。

然而,當我跑我的瓶的Web應用程序,我注意到,在從服務器的響應報頭,也表明

HTTP/1.0 200 OK 
Content-Type: text/html; charset=utf-8 
Content-Length: 13 
Server: Werkzeug/0.11.9 Python/2.7.10 
Date: Tue, 03 May 2016 12:50:08 GMT 

在第四行就表示,服務器Werkzeug

爲什麼不是這個意思Werkzeug是一個像Apache?的網絡服務器。

回答

1

不,它不是像Apache這樣的WEB服務器。這是一個CGI庫。由於APACHE(或您的FLASK應用程序)可能使用該庫來服務某些HTTP請求,因此可能會將該頭添加到響應中。

+0

是否有檢查Web應用程序使用完全相同的服務器的任何方法?我認爲請求標題會在'Server:'行顯示服務器。 –

+0

通常,「服務器」標題中的內容是準確的。但是請記住,如果有人想隱藏這些信息,她可以很容易地將該標題更改爲任何她想要的(如果她是運行網絡服務器的) –

+0

在這種情況下,標題信息最可能是正確的。由於'werkzeug'確實附帶了一個小型開發網絡服務器 - 這可能是產生上述響應的原因。我們只能確定OP是否能更詳細地解釋他的設置...... – sebastian

9

因爲不是。

在您的設置中,最有可能使用「開發服務器」(run_simple函數)進行測試。 因此,在這種使用情況下,像(非常)窮人的Apache,但只是在某種意義上它能夠正確回答HTTP請求。

如果檢查文檔 http://werkzeug.pocoo.org/docs/serving/ ,你會看到下面的註釋:

開發服務器是不是要在生產系統中使用。它是專門爲開發目的而設計的,在高負載下表現不佳。對於部署設置,請查看Application Deployment頁面。

5

不,它不是

WERKZEUG(WSGI庫)就像是你的Python代碼和HTTP的nginx/Apache服務器

這之間的溝通 是完整的用例Werkzeug WSGI:

WSGI有兩方面:「服務器」或「網關」方(通常是網站例如Apache或Nginx),以及「應用程序」或「框架」端(Python腳本本身)。爲了處理WSGI請求,服務器端 執行應用程序,並嚮應用程序端提供環境信息和回調函數 。應用程序處理 請求,並使用它提供的回調函數將響應返回給服務器端。

在服務器和 應用程序之間,可能有一個WSGI中間件,它實現了API的兩個方面 。服務器收到來自客戶端的請求,並將其轉發給中間件。處理完成後,它向 發送請求。應用程序的響應由中間件 轉發給服務器,最終轉發給客戶端。可能會有多箇中間件形成一堆符合WSGI標準的應用程序。

希望它可以幫助