[PIPython] pyro... il client non funziona?
Luca Marrocco
buildup
Lun 17 Gen 2005 18:46:18 CET
Ciao,
stavo imparando ad utilizzare pyro. Ho fatto un semplice esempio - sviluppato seguendo quello del manuale - tuttavia il client si blocca quando cerca di convertire l'uri (che recupera regolarmente) nel corrispondente oggetto proxy... non capisco come risolvere il problema, e dove sia il problema.
Qui di seguito ripoto l'esempio
-- file object.py
class Calc:
def sum(self, a, b):
return a + b
$ pyroc object
Python Remote Object Compiler (c) Irmen de Jong. Pyro V3.3
[added current directory to import path]
processing module 'object' (/home/projects/pyro-learn/object.pyo)...
examining class Calc ...
Generating proxy for Calc
This release of Pyro doesn't need server-side skeleton code.
All done. Output can be found in object_proxy.py .
-- file server.py
import Pyro.core
import Pyro.naming
import object
Pyro.core.initServer()
locator = Pyro.naming.NameServerLocator()
ns = locator.getNS(host="127.0.0.1", port=9090)
daemon = Pyro.core.Daemon()
daemon.useNameServer(ns)
obj = Pyro.core.ObjBase()
obj.delegateTo(object.Calc())
daemon.connect(obj, "calc")
daemon.requestLoop()
-- file client.py
import Pyro
import Pyro.core
import Pyro.naming
import object_proxy
Pyro.core.initClient()
Pyro.config.PYRO_TRACELEVEL = 3
locator = Pyro.naming.NameServerLocator()
ns = locator.getNS(host="127.0.0.1", port=9090)
uri = ns.resolve("calc")
calc = object_proxy.Calc(uri)
# si 'blocca' alla riga precedente
print calc.sum(1, 1)
Per provarne il funzionamento utilizzo 3 shell separate:
- sheel 1:
$ ns
*** Pyro Name Server ***
Pyro Server Initialized. Using Pyro V3.3
URI is: PYRO://10.0.0.11:9090/0a00000b5425402b55d2ceb1a1c3ae59
URI written to: /home/projects/pyro-learn/Pyro_NS_URI
Name Server started.
- shell 2:
$ python server.py
Pyro Server Initialized. Using Pyro V3.3
- shell 3, il problema:
$ python client.py
Pyro Client Initialized. Using Pyro V3.3
si mette in attesa indefinita, premendo ctrl+c ottengo il seguente output:
Traceback (most recent call last):
File "client.py", line 13, in ?
calc = object_proxy.Calc(uri)
File "/home/projects/pyro-learn/object_proxy.py", line 20, in __init__
self.adapter.bindToURI(URI)
File "/usr/lib/python2.3/site-packages/Pyro/protocol.py", line 190, in bindToURI
sock.connect((URI.address, URI.port))
File "<string>", line 1, in connect
KeyboardInterrupt
Luca
More information about the Python
mailing list