2012-08-30 66 views
2

我對Python和Pyro4相當陌生,並且試圖弄清楚如何使用它們。我的問題是,鑑於下面的服務器和客戶端代碼,我的兩臺電腦似乎無法互相交談。他們都運行Ubuntu 12.04,並且在同一個本地網絡上,並且可以ping(和ssh)對方。服務器IP爲192.168.0.18,客戶端爲192.168.0.22。Pyro4無法在計算機之間進行連接

這裏是(非常基本的)服務器的代碼,我已經與(服務器)玩:

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:[email protected]:5150 
Pyro daemon running. 

和客戶端上:

import Pyro4 
di = Pyro4.Proxy("PYRO:[email protected]:5150") 
di.request_work() 

經過一段時間後,此回報爲:

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

我也嘗試設置Pyro4.config.HOST ='192.168.0.18',而不是設置守護進程,但沒有運氣。

任何想法,爲什麼這不工作,或我做錯了什麼?

回答

2

我不確定這個問題。 您是否打開Pyro4的名稱服務?基於本教程中,我通常執行下面的shell

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

這種外殼能提供Pyro4名稱服務,我平時使用的PYRONAME代替PYRO。

+0

你好。我試着運行'python -Wigonre -m Pyro4.naming -host 192.168.0.18',然後在另一臺運行'Pyro4.locateNS()'的機器上運行,但是Pyro回覆說它找不到名稱服務器。有任何想法嗎? –

+0

感謝您的回覆!我終於發現了這個問題(防火牆實際上並沒有關閉 - 這是一個火災問題)。你的命令行調用完美。 –

相關問題