栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Flask中的Websocket

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flask中的Websocket

在常规HTTP请求中,客户端和服务器之间的连接是短暂的,客户端连接到服务器,发送请求,接收响应,然后关闭连接。在此模型中,服务器可以使用少量工作程序为大量客户端提供服务。在这种情况下,并发模型通常基于线程,进程或两者的组合。

使用websocket时,问题更加复杂,因为websocket连接长时间处于打开状态,因此服务器无法使用一小部分工作人员来服务大量客户端,每个客户端都需要拥有自己的专用工作人员。如果您使用线程和/或进程,则您的应用将无法扩展以支持大量客户端,因为您不能拥有大量线程/进程。

这是gevent输入图片的地方。Gevent有一个基于greenlets的并发模型,它的可扩展性比线程/进程好得多。因此,由于greenlets的轻量级特性,通过基于gevent的服务器为websocket连接提供服务可支持更多客户端。使用uWSGI,您可以选择与Web套接字一起使用的并发模型,其中包括gevent中基于greenlet的模型。如果需要,您也可以独立使用gevent的Web服务器。

但是请注意,gevent对Web套接字一无所知,它只是一台服务器。要使用websocket连接,您必须添加websocket服务器的实现。

Flask有两个扩展,可简化websocket的使用。Kenneth Reitz的Flask-
Sockets
扩展是gevent和gevent-
websocket的包装。该烧瓶SocketIO后缀(我是作者无耻插头)是GEVENT和GEVENT-
socketio在服务器上的包装,加上Socket.IO客户端上。Socket.IO是更高级别的套接字协议,可以使用Web套接字(如果可用),但也可以在较旧的浏览器上使用其他传输机制。

我希望这有帮助!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645615.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号