2

私は Python と Pyro4 にかなり慣れていないので、それらをどのように扱うかを理解しようとしています。私の問題は、以下のサーバーとクライアントのコードを考えると、2 台のコンピューターが互いに通信できないように見えることです。どちらも 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 のネームサービスを開きましたか? チュートリアルに基づいて、通常は次のシェルを実行します

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

このシェルは Pyro4 のネーム サービスを提供できます。私は通常、PYRO の代わりに PYRONAME を使用します。

于 2012-08-30T10:17:15.280 に答える