Tomcat 的 Python 等价物是啥?

Posted

技术标签:

【中文标题】Tomcat 的 Python 等价物是啥?【英文标题】:What is the Python equivalent of Tomcat?Tomcat 的 Python 等价物是什么? 【发布时间】:2011-09-03 15:55:58 【问题描述】:

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

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

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

具体来说:Python中最常用的容器是什么?是否有 WAR 文件的等价物,一种将 Web 应用程序标准打包到一个文件中,可在各种容器中运行的文件?

【问题讨论】:

Python 有很多 Web 框架。尝试搜索“Python Web 框架”以获取它们的列表。你还想知道什么?只是列表? 我不是在寻找框架,我想了解如何在没有框架的情况下制作 Python Web 应用程序。我比较的是 Servlet 和 Tomcat,而不是 Spring 或 Struts。 @FarmBoy:“Servlets 和 Tomcat”实际上是 Web 框架的一部分。对不起,但这仍然是框架。要摆脱框架,您必须编写套接字或 CGI 脚本。仍然有几十个 Python 框架或多或少等同于 Tomcat。请搜索并阅读结果。您想具体了解什么 @FarmBoy:“没有区别吗?”不。而且没有“规范”容器。我试图尽可能清楚地说明这一点。 Python 有许多 Web 框架。许多。你想知道什么?你要名单吗?这是一个糟糕的问题。你想让我做什么?你想要什么信息?请澄清你想做什么。 我希望我能对 cme​​ts 投反对票。 @S.Lott,您在这里对 FarmBoy 的诚实问题没有帮助。是的,有一点不同:正如 ThiefMaster 所指出的,Tomcat 等同于 WSGI 服务器,而不是框架。 【参考方案1】:

有许多可用于 python 的网络服务器。一些像 CherryPy 这样的网络服务器是用 Python 本身编写的。答案中最酷的部分是 tomcat 服务器本身支持基于 Python 的应用程序。

欲了解更多详情,请访问此网站:https://wiki.python.org/moin/WebServers

【讨论】:

只能通过 Jython 使用 Tomcat,不能用于任意 Python Web 应用程序。【参考方案2】:

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

有各种容器:

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

【讨论】:

这是最接近 Python 世界中 J2EE 规范的 Servlet API 部分的东西。 只是为了补充这个答案,如果您正在寻找一个全面的 应用程序服务器(如 jboss/websphere),而不仅仅是一个容器(如 Tomcat),那么唯一我能想到的一个是Zope。【参考方案3】:

也许 'uwsgi' 会有所帮助。这是链接:http://projects.unbit.it/uwsgi/

【讨论】:

【参考方案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 规则是“为每个请求启动一个新进程”。如果脚本允许提升权限或计划不当的上传,也可能是不安全的。

您拥有将 Apache 连接到 Python 的 mod_wsgi 框架。这可以像 CGI 一样运行,或者它可以在命名管道的末尾运行一个专用的 Python“守护程序”。

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

最后还有更完整的框架,包括请求和响应的类定义、URL解析、Authentication、Authorization等等。

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

【讨论】:

以上是关于Tomcat 的 Python 等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Java 的 UnsupportedOperationException 的 Python 等价物是啥?

Dart 中这个 python 字典的等价物是啥?

Python 中 C# 的 GetBytes() 等价物是啥?

Kotlin 中的 Python 列表、集合和映射推导等价物是啥?

Matlab 的 tic 和 toc 函数的 Python 等价物是啥?

Excel 的 Beta 发行版的 Python 等价物是啥?