Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

passing object in rpyc fails

I am trying to pass an object as a paramater using RPyC from the client to the server. But the server is unable to access the object and I receive an AttributeError.

Server Code:

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

client code

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

returns: AttributeError: cannot access 'name'.

I am using RPyC services and accoding to the website, this should work.

Any ideas?

like image 886
Ben Avatar asked Aug 19 '12 16:08

Ben


1 Answers

The config dict needs to be adjusted on the client side and the server side.

The main value to change is allow_public_attrs : True if only public variables need to be accessed or allow_all_attrs : True if private and protected variables and methods need to be accessed (i.e, those that start with '_').

On the client side, the connection code is written as in the question above and on the server code as follows:

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

For more information on all the available config options, see:

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

like image 90
Ben Avatar answered Oct 22 '22 19:10

Ben