Próbuję użyć modułu python paramiko (1.7.7.1) do wykonywania poleceń i/lub plików xfer do grupy zdalnych serwerów równolegle. Jednym z zadań wygląda następująco:Moduł wieloprocesowy z 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()
"obj" zawiera, między innymi, paramiko SSHClient, transport i SFTPClient. Lista appObjs zawiera około 25 z tych obiektów, a więc 25 połączeń z 25 różnymi serwerami.
pojawia się następujący błąd z transport.py paramiko w backtrace
raise AssertionError("PID check failed. RNG must be re-initialized after fork().
Hint: Try Random.atfork()")
I połatany /usr/lib/python2.6/site-packages/paramiko/transport.py opartej na stanowisku w https://github.com/newsapps/beeswithmachineguns/issues/17 ale wydaje się, że nie pomogło. Sprawdziłem, że transport.py w ścieżce wymienionej powyżej jest tą używaną. Lista mailingowa paramiko prawdopodobnie zniknęła.
Czy to wygląda na problem w paramiko, czy też nie rozumiem/nie stosuję modułu wieloprocesorowego? Czy ktoś chciałby zaproponować praktyczne rozwiązanie? Wielkie dzięki,
+1 głównie dlatego, że nie wiem Paramiko zostały wyparte przez użytkownika @ bitprophet pakietu ssh –
Pakiet ssh na PyPI (testowane w wersji 1.7.11, 1.7.13) podaje ten sam błąd, o którym mowa w pytaniu, przynajmniej w Pythonie 2.7.1. – ifischer
Pakiet ssh na pypi [został połączony z powrotem w górę] (http://bitprophet.org/blog/2012/09/29/paramiko-and-ssh/) od paramiko v1.8.0 – ento