Ошибка 99 при использовании Pyro4 на разных машинах - PullRequest
0 голосов
/ 08 ноября 2018

Часть кода, который я использую, основана на примере шины сообщений на https://github.com/irmen/Pyro4/tree/master/examples/messagebus. Я установил сервер имен Pyro4 на одной машине. Сервер и издатель также работают на этом компьютере.

Подписчик работает, если я запускаю его на этом компьютере, но я получаю сообщение об ошибке, если пытаюсь запустить его на другом компьютере. Мне нужно, чтобы это работало на нескольких разных машинах.

Ошибка, которую я получаю: «ошибка: [Errno 99] Невозможно назначить запрошенный адрес»

Строка с ошибкой моего кода:

    d = Pyro4.Daemon(host = NS_HOST, port = 6193)

где NS_HOST - имя хоста, на котором работают сервер имен и т. Д., А 6193 - порт, используемый ns. По некоторым причинам это, кажется, не работает нигде, кроме localhost. Нужно ли делать что-то другое? Я знаю, что могу подключиться к ns этого хоста, потому что не получаю сообщение об ошибке:

    Pyro4.locateNS(host = NS_HOST, port = 6193)

Вышеприведенной строки в настоящее время нет в моем коде (я просто использовал ее, чтобы убедиться, что у меня не было проблем с неправильным именем хоста, брандмауэрами и т. Д.), Но мне было интересно, можно ли как-то совместить это с Pyro4 .Daemon (), чтобы заставить код работать - есть идеи?

Я использую Python 2.7.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 08 ноября 2018

(Часто помогает включить фактическую трассировку стека, а не только окончательное сообщение об ошибке. И «Ошибка 99» также немного неописательна.)

Однако это сообщение об ошибке является частью OSError, которая не вызвана самим Pyro. Это ошибка из библиотеки сокетов вашей ОС , потому что вы пытаетесь привязать демона Pyro к неправильному адресу сетевого интерфейса : вы предоставляете адрес сервера имен, который работает на другом узле.

Параметры хоста и порта для демона не совпадают с теми, которые вы предоставляете для функции locateNS. См. https://pyro4.readthedocs.io/en/stable/servercode.html#creating-a-daemon Обычно их вообще не нужно указывать, а просто позвольте Pyro определить подходящие значения по умолчанию.

...