Python Tornado Websocket 处理程序在接收数据时阻塞

Posted

技术标签:

【中文标题】Python Tornado Websocket 处理程序在接收数据时阻塞【英文标题】:Python Tornado Websocket Handler blocks while receiving data 【发布时间】:2013-08-09 21:19:26 【问题描述】:

我有两个非常简单的基于 Tornado 的 websocket 处理程序在同一个进程中运行,每个处理程序都可以正常运行。但是,当一个接收大量数据 (>8MB) 时,进程会阻塞,而另一个在接收到所有数据之前无法处理消息。有什么办法可以解决这个问题并防止龙卷风在这里阻塞?

【问题讨论】:

【参考方案1】:

Tornado 可以很好地处理大量短并发请求。 它不会将长请求拆分为较小的请求。所以处理块。

为什么要使用套接字传递大量数据?最终解决方案取决于对这个问题的回答。

如果您不经常有大请求 - 只需在多个龙卷风实例前使用 haproxy。

【讨论】:

我最初尝试发送非常小的块,但我发现当我使用更大的块时整体速度更快。虽然不能消除问题,但按照您的建议运行多个龙卷风实例肯定会有所帮助。

以上是关于Python Tornado Websocket 处理程序在接收数据时阻塞的主要内容,如果未能解决你的问题,请参考以下文章

Python下tornado架构websocket简介

python websocket_tornado_redis.py

同时使用 Python Tornado 后端、WebSocket 监听器和 MQTT 客户端

Python Tornado Websocket 处理程序在接收数据时阻塞

Python Tornado 从另一个线程发送 WebSocket 消息

Python Tornado Websocket连接在关闭后仍然打开