you need to configure allow_public_attrs/allow_all_attrs on the server
side. this means that when you start the server, you need to pass *
protocol_config*= {"allow_public_attrs":True}see http://rpyc.readthedocs.org/en/latest/api/core_protocol.html#rpyc.core.protocol.DEFAULT_CONFIG and http://rpyc.readthedocs.org/en/latest/api/utils_server.html#rpyc.utils.server.Server -tomer ----------------------------------------------------------------- *Tomer Filiba* tomerfiliba.com <http://www.facebook.com/tomerfiliba> <http://il.linkedin.com/in/tomerfiliba> On Tue, Feb 26, 2013 at 9:11 AM, Jack Peng <[email protected]> wrote: > > why can't use items for dict object ? > > thanks. > > [root@deploy client]# python client.py > type(s) : <netref class '__builtin__.dict'> > print dir(s): ['__class__', '__cmp__', '__contains__', '__delattr__', > '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', > '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', > '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', > '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', > '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', > 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', > 'pop', 'popitem', 'setdefault', 'update', 'values'] > print s: {'10.216.250.230': ' 15:04:41 up 41 days, 22:47, 2 users, > load average: 0.00, 0.00, 0.00\nUSER TTY FROM LOGIN@ > IDLE JCPU PCPU WHAT\nroot pts/0 10.1.206.16 14:04 52:17 > 0.24s 0.15s python server.p\nroot pts/1 10.1.206.16 14:12 > 52:11 0.03s 0.03s -bash', '127.0.0.1': ' 15:04:33 up 36 days, 3:50, > 7 users, load average: 0.00, 0.00, 0.00\nUSER TTY > FROM LOGIN@ IDLE JCPU PCPU WHAT\nroot pts/0 > 10.1.206.16 09:20 3:29 1.87s 1.79s vim proxy.py\nroot > pts/1 10.1.206.16 09:20 1:04m 0.09s 0.05s vim > server.py\nroot pts/2 10.1.206.16 09:27 38:51 0.29s 0.29s > python\nroot pts/3 10.1.206.16 13:45 1:04m 0.19s 0.18s > python server.p\nroot pts/4 10.1.206.16 13:46 1:04m 0.21s > 0.19s python proxy.py\nroot pts/5 10.1.206.16 13:50 32.00s > 0.38s 0.37s vim client.py\nroot pts/6 10.1.206.16 13:50 > 0.00s 0.17s 0.11s python client.p'} > Traceback (most recent call last): > File "client.py", line 24, in <module> > for k,v in s.items(): > File > "/usr/lib/python2.6/site-packages/rpyc-3.2.3-py2.6.egg/rpyc/core/netref.py", > line 150, in __getattr__ > return syncreq(self, consts.HANDLE_GETATTR, name) > File > "/usr/lib/python2.6/site-packages/rpyc-3.2.3-py2.6.egg/rpyc/core/netref.py", > line 71, in syncreq > return conn.sync_request(handler, oid, *args) > File > "/usr/lib/python2.6/site-packages/rpyc-3.2.3-py2.6.egg/rpyc/core/protocol.py", > line 438, in sync_request > raise obj > AttributeError: cannot access 'items' > > ========= Remote Traceback (1) ========= > Traceback (most recent call last): > File > "/usr/lib/python2.6/site-packages/rpyc-3.2.3-py2.6.egg/rpyc/core/protocol.py", > line 300, in _dispatch_request > res = self._HANDLERS[handler](self, *args) > File > "/usr/lib/python2.6/site-packages/rpyc-3.2.3-py2.6.egg/rpyc/core/protocol.py", > line 538, in _handle_getattr > return self._access_attr(oid, name, (), "_rpyc_getattr", > "allow_getattr", getattr) > File > "/usr/lib/python2.6/site-packages/rpyc-3.2.3-py2.6.egg/rpyc/core/protocol.py", > line 501, in _access_attr > raise AttributeError("cannot access %r" % (name,)) > AttributeError: cannot access 'items' > > > ==================== CODE ================ > server.py code > class ProxyServer(Service): > > def RunSingleJob(self,CMD=None,LIST=None): > result = {} > for h in LIST: > try: > c = connect(h,20000) > result[h] = c.root.ExecCmd(CMD) > c.close() > except Exception,e: > print e > return result > > > def exposed_MadeJob(self,CMD=None,LIST=None,TYPE=0): > if TYPE == 0: > ## single sys command > return self.RunSingleJob(CMD,LIST) > > if TYPE == 1: > ## mulit sys command > > return self.RunMultiJob(CMD,LIST) > > if TYPE == 2: > ## define batch command for a job > pass > > s = ThreadedServer(ProxyServer,port=20001) > s.start() > --------------------------------------- > client.py code > > Host = '127.0.0.1' > Port = 20001 > > > HostList = ['127.0.0.1','10.216.250.230'] > Type = 0 > cmd = "w" > > result = {} > c = rpyc.connect(Host,Port) > > s = c.root.MadeJob(CMD=cmd,LIST=HostList,TYPE=Type) > > print type(s) > print dir(s) > > print s > > for k,v in s.items(): > print "Host : %s " % k > print "[ %s ]" % v > > c.close() > > > -- > > --- > You received this message because you are subscribed to the Google Groups > "rpyc" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- --- You received this message because you are subscribed to the Google Groups "rpyc" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
