2011-05-27 103 views
35

這個問題可能會出現一種誤解,但我很好奇Python世界的「Tomcat」是什麼。什麼是Tomcat的Python等價物?

我所有的網絡編程經驗,是Java(或Groovy),所以我認爲在Java中的術語。當我想到製作一個基本的Web應用時,我想編寫一些servlet,構建一個WAR文件,並將它部署到Tomcat或另一個servlet容器中。

在Python,假設我寫了一些代碼,是能夠響應HTTP請求的,該怎麼辦呢?我將如何部署它?

具體說明:Python中最常用的容器是什麼?是否有相當於一個WAR文件,一個Web應用程序的標準打包成一個文件,在不同的容器中工作?

+0

Python目前有很多web框架。嘗試搜索「Python Web框架」以獲取它們的列表。你還想知道什麼?只是名單? – 2011-05-27 19:53:15

+1

我不是在尋找一個框架,我想了解如何在沒有框架的情況下製作一個Python web應用程序。我正在比較Servlets和Tomcat,而不是Spring或Struts。 – 2011-05-27 19:55:57

+1

@FarmBoy:「Servlets和Tomcat」實際上是Web框架的一部分。對不起,但這仍然是框架。爲了擺脫框架,你必須編寫套接字或CGI腳本。仍然有幾十個Python框架與Tomcat差不多。請搜索並閱讀結果。你想知道什麼**具體**? – 2011-05-27 19:59:27

回答

27

存在具有一個共同點不同的方法:它們通常通過WSGI溝通與他們的「容器」(服務器接收HTTP請求他們去你的Python代碼之前)。

有各種容器:

  • 的wsgiref - 一個很簡單的參考實現在開發過程中是很好的
  • 阿帕奇與mod_wsgi的
  • 與模塊添加WSGI支持
  • many more
  • 其他大多數網絡服務器
+2

這是Python世界中最接近J2EE規範的Servlet API部分的東西。 – 2011-05-27 20:49:22

+0

謝謝,這很有幫助。 – 2011-05-27 21:57:51

+0

只是爲了增加這個答案,如果你正在尋找一個全面的_application server_(比如jboss/websphere),而不僅僅是一個容器(比如Tomcat),那麼我唯一能想到的就是[Zope](http:// zope2.zope.org/about-zope-2/what-is-zope-2)。 – 2013-03-02 14:14:42

4

當我想到製作一個基本的Web應用程序時,我想編寫一些servlet,構建一個WAR文件,並將它部署到Tomcat或另一個servlet容器中。

這很好,但無關緊要。這只是一個Java主題,並不適用於Java之外的很廣泛的領域。

在Python中,假設我編寫了一些能夠響應HTTP請求的代碼,我該如何處理它?我將如何部署它?

這取決於。

什麼是Python中最常用的容器?

沒有一個。

,並有一個WAR文件的等效,一個web應用程序的標準包裝成一個文件,在各種容器的作品?

沒有一個。


HTTP是用於產生對請求的響應的協議。而已。這確實是一件非常小的事情。

您有CGI腳本可以響應請求。 Python的cgi庫可以做到這一點。 http://docs.python.org/library/cgi.html

這是相對低效的,因爲簡單的CGI規則是「爲每個請求啓動一個新進程」。如果腳本允許提升權限或嚴重計劃外上傳,它也可能不安全。

您有mod_wsgi框架將Apache連接到Python。這可以像CGI那樣工作,或者它可以在命名管道的末端運行一個專用的Python「守護進程」。

WSGI標準爲請求和響應處理定義了一個非常方便和可擴展的格式。大多數框架 - 以某種方式 - 與WSGI兼容。

最後,還有更完整的框架,包括請求和響應,URL解析,認證,授權等類的定義等

這裏有一個列表:http://wiki.python.org/moin/WebFrameworks

0

有很多網絡服務器可用於python。一些像CherryPy這樣的網絡服務器是用Python編寫的。答案中最酷的部分是tomcat服務器本身支持基於Python的應用程序。

詳情看看這個網站:https://wiki.python.org/moin/WebServers

+1

使用Tomcat只能用於Jython,不能用於任何Python Web應用程序。 – 2014-03-26 09:54:35