[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