asyncio.sleep 导致 Tornado websocket 断开连接

asyncio.sleep causes Tornado websocket to disconnect

我们已经设置

WEBSOCKET_PING_INTERVAL_SEC = 2
WEBSOCKET_PING_TIMEOUT_SEC = 4

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

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

配合不佳

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

Tornado 中的帧处理似乎是按顺序进行的,这意味着如果处理不同的消息很长时间,将无法及时处理 ping。

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