python - 导致龙卷风 ioloop 在停止时停止的可能原因是什么?
问题描述
我有一个龙卷风应用程序,它不断接收和处理来自 10 个 websocket 连接的 websocket 消息。该程序将每 1 小时重新启动一次。我添加了一个简单的行:
ioloop.call_later(3600, ioloop.stop)
使 ioloop 停止。
但我发现有时程序在应该调用 ioloop.stop 并退出时会停滞 4-5 分钟。
我知道当 ioloop 停止时打开的 websocket 没有正确清理。实际上,当程序停止时,使用 netstat 我可以看到 websocket 连接仍然打开,并且 recv-Q 充满了消息。
所以我的问题是什么导致程序停止,为什么?提前致谢。
解决方案
现在我知道答案了,因为我使用 python ThreadPoolExecutor 来运行一些阻塞操作,并且当 ThreadPoolExecutor 正在关闭时,它会等到所有期货都解决。
推荐阅读
- apache-spark - 从字符串中提取单词
- c# - C# MVC 在字符串中获取文件夹位置
- android - 将 Flutter 集成到原生宿主应用时从 Flutter 完成 FlutterActivity [Add2App]
- nginx - Apollo graphql 和 Nginx 的空响应
- .net-core - 如何在 .net 核心控制台应用程序上显示消息框?
- python - 手动加载的模块没有所有属性
- python - 从列表中获取链接和抓取表
- r - 从另一个因素添加一个因素
- java - 在 springdoc-openapi-ui 中为基本身份验证启用授权按钮
- java - Android RecyclerView 比较数据并根据它更新ui