我试图使用paramiko python模块(1.7.7.1)并行执行一组远程服务器的命令和/或xfer文件。一个任务是这样的:多进程模块与paramiko
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()
“目标文件” 包含,除其他事项外,一个的paramiko SSHClient,运输和SFTPClient。 appObjs列表包含大约25个这些对象,因此有25个连接到25个不同的服务器。
我得到的paramiko的transport.py以下错误的回溯
raise AssertionError("PID check failed. RNG must be re-initialized after fork().
Hint: Try Random.atfork()")
我打补丁立足岗位在https://github.com/newsapps/beeswithmachineguns/issues/17 /usr/lib/python2.6/site-packages/paramiko/transport.py但它似乎没有帮助。我已经验证上述路径中的transport.py是正在使用的路径。 paramiko邮件列表似乎已经消失。
这看起来像paramiko中的问题,或者我误解/误用多处理模块吗?任何人都愿意提出一个实用的解决方法吗?非常感谢,
+1,主要是因为我不知道的paramiko已被@ bitprophet的SSH软件包取代 –
PyPI上的SSH软件包(测试版本1.7.11,1.7.13)给出了与问题中提到的相同的错误,至少在Python 2.7.1中。 – ifischer
pypi上的ssh包[已合并回上游](http://bitprophet.org/blog/2012/09/29/paramiko-and-ssh/)作为paramiko v1.8.0 – ento