在rpyc中传递对象失败

时间:2012-08-19 16:51:45

标签: python parameter-passing pass-by-reference rpyc

我正在尝试使用RPyC从客户端向服务器传递一个对象作为参数。但服务器无法访问该对象,我收到了AttributeError。

服务器代码:

class AgentService(rpyc.Service):
  def exposed_func(self, obj):
    return obj.name

客户代码

self._conn = connect(agent_host, agent_port, config = {"allow_public_attrs" : True})
return self._conn.root.func(obj)

returns: AttributeError: cannot access 'name'.

我正在使用RPyC服务并根据网站进行操作,这应该可行。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

需要在客户端和服务器端调整配置字典。

如果只需要访问公共变量,则要更改的主要值为allow_public_attrs : True;如果需要访问私有和受保护的变量和方法(即以'_'开头的那些变量和方法),则需要allow_all_attrs : True

在客户端,连接代码按上述问题和服务器代码编写,如下所示:

server = ThreadedServer(MyService, port = 12345,
                        protocol_config = {"allow_public_attrs" : True})

有关所有可用配置选项的详细信息,请参阅:

http://rpyc.sourceforge.net/api/core_protocol.html