Paramiko随机需要30+秒才能导入

时间:2019-03-18 18:09:31

标签: python python-2.7 paramiko

问题在于,paramiko需要30秒钟以上才能导入。到目前为止,这是“随机”发生的测试。我运行脚本,它冻结了30-60秒,然后最终将继续执行代码。我在调试中运行它,它进入了paramiko导入,并且不会移动到代码的下一行(n)。

起初我以为我的ssh会话可能无法正常关闭,但我认为情况并非如此。根据netstat,ssh会话肯定已关闭,并且可能在主机上闲置数小时后才发生。

以下是相关信息:

  • 我大约有5个导入paramiko的python脚本,它们都有这个问题。
  • 有时我可以运行这些脚本10次(甚至同时运行)而不会出现问题,然后突然所有脚本都无法在无法导入的时间导入paramiko,所有脚本都在导入时冻结(始终接近我脚本的顶部)。
  • 有时候我早上醒来时,运行这些脚本的主机已经12个小时未受影响,而我第一次运行其中一个脚本,则需要60秒才能导入paramiko。
  • 这在生产主机(CentOS 7.5.1804)和实验室主机(CentOS 7.4.1708)上发生
  • 这发生在paramiko 2.2.1、2.4.1和2.4.2版本上。

我不得不从这段代码中剥离掉50行,但这实际上是使用paramiko的代码。请记住,这是在5个不同的脚本中使用的,因此其余所有代码都完全不同。

#!/usr/bin/python
import sys
sys.modules['gssapi'] = None
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
    ssh.connect(osHost, username='root', password=osPassw, port=22)
except paramiko.SSHException:
    print "Connection to OS CLI Failed. Probably wrong password." + osHost
    quit()
stdin, stdout, stderr = ssh.exec_command(command)
commandOut = stdout.readlines()
print commandOut
ssh.close()

0 个答案:

没有答案