【问题标题】:What is the difference between web server component and web server? - No framework [closed]Web服务器组件和Web服务器有什么区别? - 没有框架[关闭]
【发布时间】:2013-05-08 18:35:05
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python wsgi


    【解决方案1】:

    澄清一下:

    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。其中一些包括:

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

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

    回答你的问题:

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

    【讨论】:

    • 是的,在我提到的项目中,他们使用tornado作为web的组件,并使用nginx来部署它。在代码上,我基本上使用了 tornado 的请求和响应属性,虽然我认为网络中的其他应用程序使用了其他一些功能。感谢您的反馈。说清楚了很多东西=)
    【解决方案2】:

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

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

    【讨论】:

    • 是的,我认为自己是初学者,但我更喜欢从头开始学习。我以前听说过 Flask,谢谢你的建议。你知道一个解释 WSGI 服务器以及如何使用它们进行部署的资源吗?
    • Werkzeug 是一个 WSGI 服务器。为什么不从这里开始:werkzeug.pocoo.org/docs
    • 好的,我会对此进行一些实验。谢谢=)
    【解决方案3】:

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

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

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

    【讨论】:

    • Tornado 可以充当 Web 服务器,但它实际上是一个应用程序框架/网络库。它主要用于编写 Web 应用程序,但您几乎可以使用它编写任何服务器(MTA、IRC、Telnet 等)您还可以在 Tornado 上运行/挂载 WSGI Web 应用程序,但不建议这样做 - 您无法获得性能本地龙卷风应用程序将获得的收益(stackoverflow.com/questions/9942188/…)。我认识的大多数人都将 WSGI 应用程序与其他服务器一起部署。
    猜你喜欢
    • 2019-02-26
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2015-09-26
    相关资源
    最近更新 更多