我是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'而不是设置守护进程,但没有运气。
为什么这不起作用的任何想法,或者我做错的事情?
答案 0 :(得分:2)
我不确定这个问题。 你打开Pyro4的名称服务了吗?根据教程,我通常执行以下shell
python -Wigonre -m Pyro4.naming --host [your ip] --port [your port]
这个shell可以为Pyro4提供名称服务,我通常使用PYRONAME代替PYRO。