【发布时间】:2011-06-22 21:06:10
【问题描述】:
我正在尝试使用 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()
"obj" 包含 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 中的问题还是我误解/误用了多处理模块?有人愿意建议一个实用的解决方法吗?非常感谢,
【问题讨论】: