【问题标题】:Error 99 when using Pyro4 on different machiens在不同机器上使用 Pyro4 时出现错误 99
【发布时间】:2018-11-08 10:20:55
【问题描述】:

我使用的部分代码基于https://github.com/irmen/Pyro4/tree/master/examples/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。

感谢您的帮助!

【问题讨论】:

    标签: python python-2.7 daemon nameservers pyro4


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!如果我将 'host' 设置为第二台机器的 IP 地址并添加 Pyro4.locateNS(host = host1, port = 6193) (其中 'host1' 是第一台机器的 IP 地址),它会起作用。我还必须修改 messagebus 示例中的 server.py 文件,以便主机默认不是 localhost,而是运行 pyro4-ns 的机器的 IP 地址。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    相关资源
    最近更新 更多