Я пытаюсь использовать модуль python paramiko (1.7.7.1) для выполнения команд и / или файлов xfer для группы удаленных серверов в параллели. Одна задача выглядит так:
jobs = []
for obj in appObjs:
if obj.stop_app:
p = multiprocessing.Process(target=exec_cmd, args=(obj, obj.stop_cmd))
jobs.append(p)
print "Starting job %s" % (p)
p.start()
"obj" содержит, среди прочего, paramiko SSHClient, transport и SFTPClient. Список appObjs содержит примерно 25 таких объектов и, таким образом, 25 подключений к 25 различным серверам.
Я получаю следующую ошибку с paramiko transport.py в трассировке событий
raise AssertionError("PID check failed. RNG must be re-initialized after fork().
Hint: Try Random.atfork()")
Я исправил /usr/lib/python2.6/site -packages / paramiko / transport.py на основе сообщения на https://github.com/newsapps/beeswithmachineguns/issues/17 , но, похоже, это не помогло. Я проверил, что используется transport.py в указанном выше пути. Список рассылки paramiko, кажется, исчез.
Похоже ли это на проблему в paramiko, или я неправильно понимаю / неправильно применяю модуль multiprocessing? Кто-нибудь захочет предложить практическое решение? Большое спасибо,