0

我使用的部分代码基于https://github.com/irmen/Pyro4/tree/master/examples/messagebus上的 messagebus 示例。我在一台机器上设置了 Pyro4 名称服务器。服务器和发布者也在这台机器上运行。

如果我在这台机器上运行它,订阅者可以工作,但如果我尝试在另一台机器上运行它,我会收到错误消息。我需要这个在几台不同的机器上工作。

我得到的错误是:“错误:[Errno 99] 无法分配请求的地址”

我的代码失败的行是:

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

其中 NS_HOST 是运行名称服务器等的主机的名称,6193 是 ns 使用的端口。出于某种原因,除了本地主机之外,它似乎在任何地方都不起作用。我需要做一些不同的事情吗?我知道我可以连接到该主机的 ns,因为我没有收到以下错误:

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

上面的行目前不在我的代码中(我只是用它来检查我没有遇到错误的主机名、防火墙等问题)但我想知道是否有一种方法可以将它与 Pyro4.Daemon 结合起来( ) 让代码工作 - 有什么想法吗?

我正在使用python 2.7。

谢谢你的帮助!

4

1 回答 1

0

(它通常有助于包括实际的堆栈跟踪,而不仅仅是最终的错误消息。而且,“错误 99”也有点难以描述。)

但是,该错误消息是不是由 Pyro 本身引起的 OSError 的一部分。这是来自操作系统套接字库的错误情况,因为您试图在错误的网络接口地址上绑定 Pyro 守护程序:您提供的是在另一个节点上运行的名称服务器的地址。

Daemon 的“host”和“port”参数与您提供给 locateNS 函数的参数不同。请参阅https://pyro4.readthedocs.io/en/stable/servercode.html#creating-a-daemon 通常您根本不必指定它们,只需让 Pyro 找出合适的默认值即可。

于 2018-11-08T20:33:14.817 回答