Я пытаюсь использовать модуль pym 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 различным серверам.
Я получаю следующую ошибку с transport.py paramiko в обратном следе
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 или я неправильно понимаю / неправильно использую многопроцессорный модуль? Кто-нибудь захочет предложить практический обходной путь? Большое спасибо,