我試圖使用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