-2

现在请容忍我。我将从头开始解释,但非常简短。8 个月前,我在一个使用 python 的 web 项目中工作,该项目没有使用任何框架(从头开始)。我限制自己实现视图和模板,但随着几个月的过去,我变得好奇,所以我做了一些研究。

现在我正在检查 WSGI 以及如何制作“自己动手”的框架。但我对一些事情有点好奇。当我 8 个月前参与那个项​​目时,我们使用了一个 Web 服务器,但我记得在 Web 中也有一个“Web 服务器”组件。

该组件是 Tornado Web Server,而另一个服务器是 nginx。现在,一台服务器和另一台服务器有什么区别?

如果组件(Tornado 或其他组件)不是我部署所需的唯一东西,我还需要什么?

4

3 回答 3

2

澄清:

Tornado 是一个 Python Web 框架和异步网络库。

这是他们自己的定义,不是我的。(https://pypi.python.org/pypi/tornado

Tornado 也可以用作 Web 服务器。一些 Python Web 开发框架并不能真正用作 Web 服务器——它们需要引导到另一个库来进行开发工作。其他人可以用作 Web 服务器,但不推荐使用它 - 它们旨在编写代码,而不是构建代码。

如果您愿意这样做,您可以直接从 Tornado 提供所有服务。大多数人——包括 Tornado 开发团队——通过将 Tornado 置于 nginx 之后,并使用 nginx 进行负载平衡和提供静态内容,已经看到了更好的性能。 http://www.tornadoweb.org/en/stable/overview.html?highlight=nginx

将 WSGI 应用程序部署到 Internet 有许多不同的方法。其中一些包括:

  • 直接在port80上部署app
  • 使用 nginx/apache 作为公共负载均衡器:
    • 代理连接到在本地端口上运行的应用程序
    • 在 uwsgi 下运行应用程序,配置公共负载均衡器以代理对 uwsgi 的请求

还有其他方法可以使用 gunicorn、eventlet、twisted 和无数其他网络或 Web 服务库来部署 WSGI 应用程序。

要回答您的问题:

在您从事的项目中,nginx 充当面向公众的 Web 服务器。Tornado(很可能)既可以用作 Web 框架,也可以用作私有 Web 服务器。

于 2013-05-08T19:04:34.087 回答
1

Tornado 是一个供 Python Web 应用程序使用的 Web 服务器。

nginx 是一个更通用的 Web 服务器,您通常将其用作其他 Web 服务器的前端,以进行虚拟主机或其他代理。它主要与 Apache 竞争。

所以它们都是 Web 服务器,但做的事情完全不同。

于 2013-05-08T18:47:02.143 回答
1

Xanathos,您提到的Tornado组件是一个用于处理大量同时连接的 Web 服务器。它是基于 Twisted Python 构建的,如果您还是初学者,我不建议您使用它。我可能会建议您研究一下 Python Werkzeug,因为它可以很好地介绍 WSGI。

编辑:如果你想要一个非常轻量级的框架,你可能也对Flask感兴趣

于 2013-05-08T18:39:51.927 回答