2012-08-19 13 views
5

Estoy tratando de pasar un objeto como un parámetro usando RPyC desde el cliente al servidor. Pero el servidor no puede acceder al objeto y recibo un AttributeError.objeto que pasa en rpyc falla

código del servidor:

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

código de cliente

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

returns: AttributeError: cannot access 'name'.

estoy usando RPyC servicios y accoding a la página web, esto debería funcionar.

¿Alguna idea?

+3

David, Gracias por la edición - se ve mucho más profesional ... – Ben

Respuesta

5

La configuración debe ajustarse en el lado del cliente y del servidor.

El valor principal a cambiar es allow_public_attrs : True si solo se necesita acceder a las variables públicas o allow_all_attrs : True si se necesita acceder a variables y métodos privados y protegidos (es decir, los que comienzan con '_').

En el lado del cliente, el código de conexión se escribe como en la pregunta anterior y en el código del servidor de la siguiente manera:

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

Para obtener más información sobre todas las opciones de configuración disponibles, ver:

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

Cuestiones relacionadas