2

我对 Python 和 Pyro4 比较陌生,并且正在尝试弄清楚如何使用它们。我的问题是,鉴于以下服务器和客户端代码,我的两台计算机似乎无法相互通信。它们都运行 Ubuntu 12.04,并且在同一个本地网络上,并且可以互相 ping(和 ssh)。服务器 IP 为 192.168.0.18,客户端为 192.168.0.22。

这是我玩过(服务器)的(非常基本的)服务器代码:

import Pyro4

class dispatcher(object):
    def __init__(self):
        self.name = "Dispatcher"
        self.version = "0.1"

    def request_work(self):
        print("Someone requested work!")
        return ['Work']

disp = dispatcher()
daemon = Pyro4.Daemon(host="192.168.0.18", port=5150)
Pyro4.Daemon.serveSimple(
    { disp: "test.dispatcher" },
    ns=False,
    daemon=daemon,
    verbose = True
)

这将运行并输出以下内容:

/usr/local/lib/python2.7/dist-packages/Pyro4-4.14-py2.7.egg/Pyro4/core.py:155:    UserWarning: HMAC_KEY not set, protocol data may not be secure warnings.warn("HMAC_KEY not set, protocol data may not be secure") 
Object <__main__.dispatcher object at 0x7ff21f9a6b90>:
uri = PYRO:mb.dispatcher@192.168.0.18:5150
Pyro daemon running.

在客户端:

import Pyro4
di = Pyro4.Proxy("PYRO:test.dispatcher@192.168.0.18:5150")
di.request_work()

过了一会儿,这又回来了:

Pyro4.errors.CommunicationError: cannot connect: [Errno 110] Connection timed out

我也尝试过设置 Pyro4.config.HOST = '192.168.0.18' 而不是设置守护进程,但没有运气。

任何想法为什么这不起作用,或者我做错了什么?

4

1 回答 1

2

我不确定这个问题。你打开 Pyro4 的名称服务了吗?根据教程,我通常执行以下shell

python -Wigonre -m Pyro4.naming --host [your ip] --port [your port]

这个 shell 可以为 Pyro4 提供名称服务,我通常使用 PYRONAME 而不是 PYRO。

于 2012-08-30T10:17:15.280 回答