首页 > 解决方案 > 导致龙卷风 ioloop 在停止时停止的可能原因是什么?

问题描述

我有一个龙卷风应用程序,它不断接收和处理来自 10 个 websocket 连接的 websocket 消息。该程序将每 1 小时重新启动一次。我添加了一个简单的行:

ioloop.call_later(3600, ioloop.stop)

使 ioloop 停止。

但我发现有时程序在应该调用 ioloop.stop 并退出时会停滞 4-5 分钟。

我知道当 ioloop 停止时打开的 websocket 没有正确清理。实际上,当程序停止时,使用 netstat 我可以看到 websocket 连接仍然打开,并且 recv-Q 充满了消息。

所以我的问题是什么导致程序停止,为什么?提前致谢。

标签: pythontornado

解决方案


现在我知道答案了,因为我使用 python ThreadPoolExecutor 来运行一些阻塞操作,并且当 ThreadPoolExecutor 正在关闭时,它会等到所有期货都解决。


推荐阅读