在web2py示例中,有一个websocket示例,在这里使用龙卷风:
gluon/contrib/websocket_messaging.py
这需要启动另一个服务器tornado
。我的问题是,我需要另一台服务器吗?我是否应该只有一台服务器来处理websocket内容和正常的http请求?
另外,龙卷风似乎是第二台服务器的首选服务器,这可能有所不同吗?
我是websockets(和webapp开发)的新手,因此可以帮助我更好地理解这一点的任何评论/链接。
通常通过线程化Web服务器为基于Python WSGI的框架(例如web2py)提供服务。典型的HTTP请求仅非常短暂地占用一个服务器线程,以便接收传入的请求并传递响应,然后释放线程以服务于另一个传入的请求。
另一方面,Websocket(和长时间轮询)要求客户端(即浏览器)和Web服务器之间存在长期连接。因此,websocket连接将无限期占用线程,因此您只能拥有与线程一样多的连接,从而将应用程序限制为相对较少的并发用户。
为了启用许多同时的Websocket连接,因此最好通过具有无阻塞网络I / O的服务器(例如Tornado)为Websocket提供服务。有关更多详细信息,请参见http://www.tornadoweb.org/en/stable/guide/async.html。
另一种选择是使用GEVENT与猴修补,其可以在WSGI申请的上下文中所描述的被用于此处。但是请记住,您使用的任何涉及网络I / O的库(例如数据库驱动程序)都必须与此方法兼容(通过猴子补丁或为协程明确设计的代码)。
如果实时/服务器推送功能是应用程序的主要方面,尤其是如果您不熟悉Web开发,则可以考虑使用针对此特定用例构建的框架,例如Meteor。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句