我正在尝试使用paramiko python模块(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()
Run Code Online (Sandbox Code Playgroud)
除其他外,"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()")
Run Code Online (Sandbox Code Playgroud)
我根据https://github.com/newsapps/beeswithmachineguns/issues/17上的帖子修补了/usr/lib/python2.6/site-packages/paramiko/transport.py,但它似乎没有帮助.我已经验证了上面提到的路径中的transport.py是正在使用的路径.paramiko邮件列表似乎已经消失.
这看起来像paramiko中的问题还是我误解/误用了多处理模块?有人愿意建议一个实际的解决方法吗?非常感谢,