Python相当于Tomcat吗?

2022-08-31 21:04:40

这个问题可能暴露了一种误解,但我很好奇Python世界的“Tomcat”是什么。

我所有的Web编程经验都是用Java(或Groovy)编写的,所以我用Java术语来思考。当我想到制作一个基本的Web应用程序时,我会想到编写一些servlet,构建一个WAR文件,并将其部署在Tomcat或其他servlet容器中。

在Python中,假设我编写了一些能够响应HTTP请求的代码,我会用它做什么?如何部署它?

具体来说:Python中最常用的容器是什么?是否有 WAR 文件的等效项,即将 Web 应用程序标准打包为一个可在各种容器中工作的文件?


答案 1

有不同的方法有一个共同点:它们通常通过WSGI与他们的“容器”(服务器在进入Python代码之前接收HTTP请求)进行通信。

有各种容器:

  • wsgiref - 一个非常简单的参考实现,在开发过程中很好
  • 具有mod_wsgi的 Apache
  • 大多数其他 Web 服务器都带有添加 WSGI 支持的模块
  • 更多

答案 2

当我想到制作一个基本的Web应用程序时,我会想到编写一些servlet,构建一个WAR文件,并将其部署在Tomcat或其他servlet容器中。

这很好,但无关紧要。这只是一种Java主义,在Java之外并不广泛应用。

在Python中,假设我编写了一些能够响应HTTP请求的代码,我会用它做什么?如何部署它?

这要视情况而定。

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

没有。

是否有 WAR 文件的等效项,即将 Web 应用程序标准打包为一个可在各种容器中工作的文件?

没有。


HTTP 是一种用于生成对请求的响应的协议。就是这样。这真的是一件非常小的事情。

你有可以响应请求的CGI脚本。Python库可以做到这一点。http://docs.python.org/library/cgi.htmlcgi

这是相对低效的,因为简单的CGI规则是“为每个请求触发一个新进程”。如果脚本允许提升的权限或计划不当的上载,则也可能不安全。

你有将Apache连接到Python的框架。这可以像CGI一样,也可以在命名管道的末端运行一个专用的Python“守护进程”。mod_wsgi

WSGI标准定义了一种非常方便且可扩展的请求和响应处理格式。大多数框架 - 以某种方式 - 都是WSGI兼容的。

最后,还有更完整的框架,包括请求和响应的类定义,URL解析,身份验证,授权等。

下面是一个列表:http://wiki.python.org/moin/WebFrameworks