背景
自动化用例跑的足够长之后
会随机出现OSError: Socket is closed
这种问题是随机出现的,应该是SSHLibrary或系统问题的问题
本文针对可能的SSHLibrary问题加以解决
原因
原因是TCP连接,被执行机所在系统自行断开了
解决办法
SSHLibrary调用的是paramiko
所以解决问题的方式,是利用paramiko来解决
实施方案
在SSHLibrary\pythonclient.py文件中增加如下代码:
self._shell.keep_this = client
class Shell(AbstractShell):
def __init__(self, client, term_type, term_width, term_height):
self._shell = client.invoke_shell(term_type, term_width, term_height)
# add use to solve socket.error: Socket is closed
self._shell.keep_this = client
最后的说明
不一定完全可行,和科学一样,只能被证实,不能被证伪,反正我的改好后,就还没出现过
2019年10月10好接着补充解决方案
经过调查,我的客户端出现问题,在切换连接后出现的,疑似切换链接失败了
所以在切换链接之后,增加可靠性,可能更靠铺