def _check_banner(self):
for i in range(100):
if i == 0:
timeout = self.banner_timeout
else:
timeout = 2
在永久性的改变变成这样之后:
def _check_banner(self):
for i in range(100):
if i == 0:
timeout = self.banner_timeout
timeout = 200 # <<<< Here is the explicit declaration
else:
timeout = 2
将transport.py文件中的超时值(如TinBane所述)从15更改为更高时,问题得到部分解决。在第484行:
但是,为了永久地解决这个问题,我向transport.py添加了一个静态行,以在
_check_banner(self):
函数中声明新的更高值。具体的变化如下:
这取决于你所说的“修复”是什么意思。正如评论中指出的,根本原因是拥挤/缺乏资源。这样,它类似于一些HTTP代码。这是正常的原因,可能是ssh服务器返回了错误的头数据。
429请求太多,告诉客户机使用速率限制,或者有时API会以类似的方式返回503,如果您超出了配额。我的想法是,稍后再试,稍等。
您可以尝试在代码中处理此异常,稍等片刻,然后重试。您还可以编辑transport.py文件,将横幅超时设置为更高的值。如果您有一个应用程序,服务器的响应速度并不重要,您可以将其设置为60秒。
添加到上面的答案中,建议编辑
transport.py
:您不必再这样做了。由于2015年发布的Paramikov.1.15.0(准确地说,this PR)可以在创建Paramiko连接时配置该值,如下所示:
在Paramiko的当前版本中,在编写这些单词v.2.7.1时,您还可以在调用
connect
方法时配置另外两个超时,总共有3个(source):banner_timeout
-等待SSH横幅出现的可选超时(秒)。timeout
-TCP连接的可选超时(秒)auth_timeout
-等待身份验证响应的可选超时(秒)。相关问题 更多 >
编程相关推荐