2009-11-17 81 views
30

從網上我收集了WSGI是一個用於python web開發/框架的CGI。 FCGI似乎是各種語言的更普遍的網關。不知道這兩者在引用Python和C/++語言時的性能差異。WSGI和FCGI之間有速度差嗎?

回答

67

正確,WSGI是一個Python程序化API定義,FASTCGI是一種語言無關的套接字線協議定義。有效地,它們處於不同的層次,WSGI是更高層。換句話說,可以在使用FASTCGI與Web服務器進行通信的情況下實現WSGI,但不能以其他方式實現。

通常,FASTCGI是套接字線協議,意味着您總是需要某種類型的編程接口才能使用它。對於Python來說,這樣的選項是WSGI。由於FASTCGI只是達到目的的一種手段,所以在這種情況下,無法真正將其性能與WSGI進行比較,因爲WSGI不是可比較的套接字線協議,而是FASTCGI本身的用戶。

可以嘗試比較FASTCGI上不同語言接口的性能,但總的來說,本身並沒有什麼意義,因爲較低的網絡層和服務器請求處理不是瓶頸。相反,你的應用程序代碼和數據庫將會。

+1

我認爲詢問響應請求的fcgi應用程序與響應請求的wsgi應用程序之間的時差是有意義的。由於fcgi和wsgi是將編程語言連接到Web請求的兩種不同方式,因此它們做的事情非常相似。 – Ninjaxor 2016-07-03 23:34:42

20

他們是兩回事。 WSGI是編寫Web應用程序的Python專用接口。有關於任何Web服務器協議來提供WSGI接口的包裝器。 FastGCI(FCGI)就是這樣的Web服務器協議之一。所以,WSGI是一個抽象層,而CGI/FastCGI/mod_python是實際Web服務器與應用程序交談的方式。某些代碼必須將本機接口轉換爲WSGI(在wsgiref中有一個CGI模塊,FastCGI有flup等)。還有Apache的mod_wsgi,它直接在Apache模塊中進行翻譯,所以你不需要任何Python包裝器。

相關問題