原文中文,约3200字,阅读约需8分钟。
📝
内容提要
文章介绍了在Python项目中使用psutil模块时遇到的问题和解决方法。作者在一个CI平台项目中使用psutil模块控制客户机的命令行操作,但发现当客户端断开连接时,整个进程会自动终止。通过排查发现是psutil模块中的一个bug导致的,经过修改代码逻辑后问题得到解决。作者还提到要查看psutil文档是否有相关说明,如果没有可以考虑向psutil做贡献。
🎯
关键要点
-
安装psutil模块的命令是pip install psutil。
-
项目要求是将命令行操作提供一个可视化的web界面。
-
使用SSH连接客户机并通过websocket实现长连接。
-
disconnect事件触发时,服务端会自动销毁客户端的子进程。
-
发现客户端断开连接时,整个进程自动终止的问题。
-
通过print()调试发现psutil.Process()获取到的是主进程的pid。
-
terminate()函数错误地终止了主进程。
-
修改代码逻辑后解决了问题,确保child_id不为None再获取子进程。
-
计划查看psutil文档以确认是否有相关说明,考虑为psutil贡献代码。
🏷️