python rpyc 服务器端 测试代码
- #coding:utf-8
- from rpyc import Service
- from rpyc.utils.server import ThreadedServer
- import time,threading
- class TestService(Service):
- def __init__(self, conn):
- self._conn = conn
- self.events={}
- print 'a conn connect:',conn
- t = threading.Thread(target = self.test_note_client, args = ())
- t.setDaemon(True)
- t.start()
- def test_note_client(self):
- print 'start on time event'
- while 1:
- time.sleep(1)
- if 'ontime' in self.events:
- self.events['ontime']('on time')
- if 'update' in self.events:
- self.events['update']('http://www.com')
- def exposed_add(self, a):
- return a+1
- def exposed_call(self,callback):
- return callback(30)
- def exposed_addlistener(self,event,callback):
- if not hasattr(self,'events'):
- self.events={}
- self.events[event]=callback
- def exposed_getadd(self):
- def add(a):
- print 'call on server'
- return a+1
- return add
- server = ThreadedServer(TestService, port=1235, auto_register=True)
- server.start()
客户端
- #coding:utf-8
- from rpyc import Service
- from rpyc.utils.server import ThreadedServer
- import rpyc
- #各种回调的测试
- while 1:
- try:
- conn = rpyc.connect('localhost', 1235)
- task = conn.root.add(2)
- print task
- add=conn.root.getadd()
- print add(2)
- def add_client(a):
- print 'call on client'
- return a+1
- a=conn.root.call(add_client)
- print a,'=31?'
- def ontime_event(*args):
- print 'client on time call',args
- conn.root.addlistener('ontime',ontime_event)
- conn.root.addlistener('update',ontime_event)
- conn.serve_all()
- except Exception,e:
- print e
- import time
- time.sleep(1)
- #conn.close()