Remote access Pyro4:从远程pyro对象调用远程方法

Remote access Pyro4:从远程pyro对象调用远程方法,remote-access,pyro,pyro4,Remote Access,Pyro,Pyro4,我试图调用Pyro对象方法p1。从另一个远程Pyro对象p2获取名称。该方法应返回p1对象的名称,但不返回任何空字符串。令人惊讶的是,我看到p1可以从p2访问,因为当我调用p1.print_hello时,它可以工作。似乎传递了一个新实例,而不是初始化的实例,我不确定发生了什么。请大家看看下面的代码,谢谢大家的帮助 下面的代码为可读性创建了代理,我忽略了名称服务器并创建了守护进程: def create_proxy(ns_host, thing_host): ns = Pyro4.loca

我试图调用Pyro对象方法p1。从另一个远程Pyro对象p2获取名称。该方法应返回p1对象的名称,但不返回任何空字符串。令人惊讶的是,我看到p1可以从p2访问,因为当我调用p1.print_hello时,它可以工作。似乎传递了一个新实例,而不是初始化的实例,我不确定发生了什么。请大家看看下面的代码,谢谢大家的帮助

下面的代码为可读性创建了代理,我忽略了名称服务器并创建了守护进程:

def create_proxy(ns_host, thing_host):
    ns = Pyro4.locateNS(host=ns_host)
    uri = ns.lookup(thing_host) 
    return Pyro4.Proxy(uri)

p1 = create_proxy('localhost', 'host1')
p1.init()
p2 = create_proxy('localhost', 'host2')
p2.init(p1)
p1和p2对象的类定义如下所示:

Class Host1:
   def __init__(self)
      self.name = ''

   def init(sut):
      self.name = 'host 1'
   def get_name(self):
      return self.name

Class Host2:
   def init(p):
      print('Host name: ', p.get_name())
干杯,
/Nas

没有通过Pyro传递任何实际实例,在您的情况下,传递的是到远程对象p1的代理信息

但是,由于默认的服务器并发模型是session,当您最终从另一个Pyro对象中调用get_name时,Pyro确实会创建一个Host1的新实例。无法以某种方式共享相同的连接

但是,如果可以将同一对象设置为单实例模式,则可以共享该对象。看看怎么做