2015-03-28 2 views
0

Je suis totalement nouveau à RPC et Pyro et essayant de comprendre le consept de cela. Je fais l'exemple du site Web de celui-ci et mon code ne fonctionne pas quand je fais ns = Vrai malgré cela fonctionne quand ns = False.I'am obtenir cette erreur:Pyro ns = Vrai ne fonctionne pas

Pyro4.errors.NamingError: Failed to locate the nameserver

quand je débogage avec ipdb, je vois ceci:

CommunicationError: cannot connect: [Errno 111] Connection refused

from __future__ import print_function 
import Pyro4 
import person 

class Warehouse(object): 
    def __init__(self): 
     self.contents = ["chair", "bike", "flashlight", "laptop", "couch"] 

    def list_contents(self): 
     return self.contents 

    def take(self, name, item): 
     self.contents.remove(item) 
     print("{0} took the {1}.".format(name, item)) 

    def store(self, name, item): 
     self.contents.append(item) 
     print("{0} stored the {1}.".format(name, item)) 

def main(): 
    warehouse = Warehouse() 
    Pyro4.Daemon.serveSimple(
      { 
       warehouse: "example.warehouse" 
      }, 
      ns = True) 

if __name__=="__main__": 
    main() 

quelle est la solution de ne pas démarrer le démon?

Répondre

0

L'argument ns=True dans serveSimple va enregistrer les objets dans un serveur de noms en cours d'exécution quelque part. Vous devrez commencer par vous-même. Cela ne fonctionnera pas si aucun serveur de noms n'est déjà en cours d'exécution.

0

Vous devez lire attentivement les instructions du tutoriel. Vous devez exécuter python -m Pyro4.naming en dehors de warehouse.py