5

我正在尝试使用 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服务并根据网站进行编码,这应该可以。

有任何想法吗?

4

1 回答 1

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

于 2012-08-30T08:55:56.043 回答