Почему dispynode возвращает "игнорирование ping" при обращении к клиенту dispy?
Я работаю с кластером серверов Centos6.5, где у меня есть один головной узел, а остальные являются подчиненными узлами. Узлы подключены через коммутатор в локальной сети 192.168.1.x, который не виден внешнему миру.
Я пытаюсь использовать Python Dispy на головном узле для распространения скрипта Python на подчиненных узлах. Все подчиненные узлы работают с dispynode.py, и когда я запускаю программу Dispy на клиентском узле, подчиненные, работающие с dispynode.py, возвращают "игнорирование ping из 192.168.1.1". Это тогда просто висит. Любые идеи о том, почему подчиненные, использующие dispynode, игнорируют и не выполняют работу?
Спасибо!
1 ответ
Ответ такой, как @Rich, упомянутый выше, версии должны быть одинаковыми. Dispy не возвращает очень полезное сообщение об ошибке, когда клиентские узлы и серверные узлы имеют разные версии. Они должны иметь одинаковый номер версии, чтобы правильно общаться. Я нашел это в исходном коде для dispynode.py:
try:
info = unserialize(msg[len('PING:'):])
assert info['version'] == _dispy_version
if info['ip_addr'] is None:
addr = (addr[0], info['port'])
else:
addr = (info['ip_addr'], info['port'])
except:
logger.debug('Ignoring ping message from %s (%s)', addr[0], addr[1])
continue
Обратите внимание на строку версии assert.