Python中相当于Tomcat的是什么?

52 投票
4 回答
38956 浏览
提问于 2025-04-16 18:29

这个问题可能有点误解,但我很好奇在Python的世界里,什么东西相当于Java中的“Tomcat”。

我所有的网页编程经验都是用Java(或者Groovy),所以我习惯用Java的思维方式。当我想到要做一个基本的网页应用时,我就会想到写一些servlet,打包成一个WAR文件,然后在Tomcat或者其他servlet容器中部署。

在Python中,假设我写了一些能够响应HTTP请求的代码,我该怎么处理它呢?我应该怎么部署它?

具体来说:在Python中,最常用的容器是什么?有没有类似于WAR文件的东西,可以把网页应用打包成一个文件,适用于各种容器?

4 个回答

2

也许可以试试'uwsgi'这个工具。这里有个链接可以了解更多信息:http://projects.unbit.it/uwsgi/

5

当我想到制作一个基本的网页应用时,我会想到写一些servlet,构建一个WAR文件,然后把它部署到Tomcat或其他的servlet容器里。

这听起来不错,但其实没什么关系。这只是Java的特性,除了Java之外并不适用。

在Python中,假设我写了一些能够响应HTTP请求的代码,我该怎么处理呢?我该如何部署它?

这要看情况。

在Python中,最常用的容器是什么?

其实没有一个。

那有没有类似于WAR文件的东西,可以把网页应用打包成一个文件,适用于各种容器呢?

也没有。


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

33

有很多种方法来处理这个问题,但它们都有一个共同点:它们通常通过 WSGI 和它们的“容器”进行通信(这个容器就是接收 HTTP 请求的服务器,在请求到达你的 Python 代码之前)。

常见的容器有:

  • wsgiref - 这是一个非常简单的参考实现,适合在开发时使用
  • Apache 服务器加上 mod_wsgi 模块
  • 其他大多数网络服务器也可以通过添加 WSGI 支持的模块来使用
  • 还有很多其他的选择

撰写回答