Paramiko в случайном порядке занимает более 30 секунд, чтобы импортировать - PullRequest
1 голос
/ 18 марта 2019

Проблема в том, что для импорта paramiko потребуется более 30 секунд.Это происходит "случайно" из тестирования, которое я провел до сих пор.Я запускаю сценарий, и он просто зависает на 30-60 секунд, а затем, в конце концов, продолжит работу с кодом.Я запустил его в режиме отладки, и он доходит до импорта paramiko и не будет переходить к следующей (n) строке в коде.

Сначала я подумал, что, возможно, мои сеансы ssh не закрываются должным образом, но я не думаю, что это так.Сессия ssh определенно закрыта в соответствии с netstat, и это может произойти после нескольких часов неиспользования на хосте.

Вот соответствующая информация:

  • У меня есть около 5 сценариев Pythonкоторые импортируют paramiko, и все они имеют эту проблему.
  • Иногда я могу без проблем запустить эти сценарии 10 раз (даже одновременно), тогда внезапно ни один из сценариев не будет импортировать paramiko в то время, когда его невозможно импортироватьвсе скрипты просто замирают при импорте (который всегда находится в верхней части моего скрипта).
  • В других случаях, когда я просыпаюсь утром, хост, на котором выполняются эти скрипты, не затрагивался в течение 12 часов, ипри первом запуске одного из сценариев импорт paramiko занимает 60 секунд.
  • Это происходит на производственных хостах (CentOS 7.5.1804) и лабораторных хостах (CentOS 7.4.1708)
  • Это происходит в версиях paramiko 2.2.1, 2.4.1 и 2.4.2.

Мне пришлось вырезать примерно 50 строк из этого кода, но по сути это код, которыйт использует парамико.Имейте в виду, что это используется в 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()
...