首页 > 解决方案 > asyncio.sleep 导致 Tornado websocket 断开连接

问题描述

我们已经设置

WEBSOCKET_PING_INTERVAL_SEC = 2
WEBSOCKET_PING_TIMEOUT_SEC = 4

(我们传递给 Tornado 的 websocket 处理程序的参数。)

现在,每当我们在代码中执行 long (> 6) asyncio.sleep 时,我们的 websocket 就会断开连接,而常规 time.sleep 不会断开它。显然,websocket ping 间隔似乎与 asyncio.sleep 不兼容。

我们应该改变什么来解决这个问题?(假设我们仍然需要总共 6 秒来检测断开连接。)

标签: pythonwebsocketpython-asynciotornado

解决方案


Tornado 中的帧处理似乎是按顺序完成的,这意味着如果长时间处理不同的消息,则不会及时处理 ping。

我们在这里的 Tornado GitHub 存储库中打开了一个问题。


推荐阅读