2013-05-08 155 views
-2

现在熊我请。我会从头开始解释,但很简单。 8个月前,我在一个使用python的web项目中工作,该项目不使用框架(从头开始)。我限制自己实现视图和模板,但随着几个月的过去,我变得好奇,所以我做了一些研究。Web服务器组件和Web服务器有什么区别? - 没有框架

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

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

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

回答

2

澄清:

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

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

龙卷风也可以作为网络服务器。一些Python Web开发框架并不真正起到Web服务器的作用 - 它们需要引导到另一个库上进行开发工作。其他人可以作为一个Web服务器,但不建议它 - 他们的目的是编写代码,而不是建立它。

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

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

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

还有其他的方式s部署WSGI应用程序使用gunicorn,eventlet,扭曲和无数其他网络或Web服务库。

要回答你的问题:

在你工作的项目,Nginx的功能作为一个面向公众的Web服务器。龙卷风(最有可能)既是Web框架又是私人Web服务器。

+0

是的,在我提到的项目中,他们使用龙卷风作为网络组件,并使用nginx进行部署。在代码中,我基本上使用了龙卷风的请求和响应属性,但我认为网络中的其他应用程序使用了其他一些功能。 感谢您的反馈意见。明确了很多东西=) – Xanathos 2013-05-08 19:26:57

1

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

编辑: 如果你想要的东西,是一种很轻的框架,你也可能有兴趣在Flask

+0

是的,我认为自己是初学者,但我更喜欢从头开始学习。我之前听说过Flask,谢谢你的建议。你知道一个解释WSGI服务器的资源,以及如何使用它们进行部署? – Xanathos 2013-05-08 18:50:58

+0

Werkzeug是一个WSGI服务器。为什么不从这里开始:http://werkzeug.pocoo.org/docs/ – 2013-05-08 18:53:12

+0

好的,我会在这方面进行一些尝试。谢谢=) – Xanathos 2013-05-08 19:22:12

1

龙卷风是由Python的Web应用程序使用的Web服务器。

nginx是一个更通用的网络服务器,您通常使用它作为前面的其他网络服务器来做虚拟主机或其他代理。它主要与Apache竞争。

因此,他们都是网络服务器,但做了完全不同的事情。

+0

龙卷风可以作为一个Web服务器,但它确实是一个应用程序框架/网络库。它主要用于编写Web应用程序,但您可以使用它编写几乎所有的服务器(MTA,IRC,Telnet等) 您也可以在Tornado上运行/挂载WSGI webapps,但并不真正推荐它 - 原生龙卷风应用会获得的性能提升(http://stackoverflow.com/questions/9942188/running-a-pyramid-wsgi-application-under-tornado)。我认识的大多数人都会使用其他服务器部署WSGI应用程序 – 2013-05-08 19:46:40

相关问题