Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pyro4: Failed to locate the nameserver

Tags:

python

pyro

I'm rather new to Python and Pyro4. So I try to follow the second example of this page Pyro - Python Remote Objects - 4.41, but when I run the server throw this exception:

Traceback (most recent call last):
  File "greeting-server.py", line 10, in <module>
    ns = Pyro4.locateNS()                  # find the name server
  File "/usr/lib/python2.7/dist-packages/Pyro4/naming.py", line 344, in locateNS
    raise e
Pyro4.errors.NamingError: Failed to locate the nameserver

Code Server:

# saved as greeting-server.py
import Pyro4

class GreetingMaker(object):
    def get_fortune(self, name):
        return "Hello, {0}. Here is your fortune message:\n" \
               "Tomorrow's lucky number is 12345678.".format(name)

daemon = Pyro4.Daemon()                # make a Pyro daemon
ns = Pyro4.locateNS()                  # find the name server
uri = daemon.register(GreetingMaker)   # register the greeting maker as a Pyro object
ns.register("example.greeting", uri)   # register the object with a name in the name server

print("Ready.")
daemon.requestLoop()                   # start the event loop of the server to wait for calls

Run pyro-ns in another terminial first:

$pyro-ns
*** Pyro Name Server ***
Name server listening on: ('0.0.0.0', 9090)

WARNING: daemon bound on hostname that resolves to loopback address 127.0.x.x 

URI is: PYRO://127.0.1.1:9090/7f0001011d2a21ca9fb63702dd216e1143
URI written to: /home/guille/Documents/pyro examples/Pyro4-master/examples/banks/Pyro_NS_URI
Name Server started.

Remark: I work on Debian 8 and I've installed:

  • sudo apt-get install pyro4
  • sudo apt-get install python2-pyro4
  • pip install https://pypi.python.org/packages/2.7/s/serpent/serpent- 1.7-py2.py3-none-any.whl

to run this example

Maybe I missed something. Any ideas why this is not working, or things that I'm doing wrong? thanks in advance.

like image 463
Cyberguille Avatar asked Dec 28 '15 19:12

Cyberguille


1 Answers

This work for me:

Run python -m Pyro4.naming in another terminial first:

Not starting broadcast server for localhost.
NS running on localhost:9090 (127.0.0.1)
URI = PYRO:Pyro.NameServer@localhost:9090

and not pyro-ns I've done before for pyro4 as you see this procedure change

like image 74
Cyberguille Avatar answered Oct 02 '22 05:10

Cyberguille