Web服务器组件和Web服务器有什么区别? - 没有框架

时间:2013-05-08 18:35:06

标签: python wsgi

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

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

该组件是Tornado Web Server,另一个服务器是nginx。现在,一个服务器与另一个服务器之间的区别是什么?

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

3 个答案:

答案 0 :(得分:2)

澄清:

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

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

Tornado也可以充当Web服务器。一些Python Web开发框架并不真正起到Web服务器的作用 - 它们需要被引导到另一个库以进行开发工作。其他人可以作为Web服务器运行,但不推荐它 - 它们的目的是编写代码,而不是构建代码。

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

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

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

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

回答你的问题:

在您参与的项目中,nginx作为面向公众的Web服务器运行。 Tornado(很可能)既可以作为Web框架,也可以作为私有Web服务器。

答案 1 :(得分:1)

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

编辑: 如果您想要一个非常轻松的框架,您可能也会对Flask

感兴趣

答案 2 :(得分:1)

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

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

所以他们都是网络服务器,但完全不同。