开局篇我们说了,RPC框架的四个核心内容
class Connection(object):
    '''
    @RPC 连接。一般说来,都是socket连接,这里简化起见,直接本地变量实现。
    '''
    def __init__(self, sending_msg_list, recving_msg_list):
        '''
        Constructor
        '''
        self.sending_msg_list = sending_msg_list
        self.recving_msg_list = recving_msg_list
    
    def send(self, message):
        self.sending_msg_list.append(message)
    
    def recv(self):
        while len(self.recving_msg_list) == 0: time.sleep(0.01)
        return self.recving_msg_list.pop(0)
    
    def isClosed(self):
        return Falsedef request(self, req):
        # 全部简化处理,不考虑线程安全问题,不考虑异步
        # 先是将RPC消息发送到服务端,然后服务端就会处理,并将结果发回到客户端,客户端这边接收处理结果。
        # self.remote.procRequest(req) // 删除
        self.conn.send(req)
        rsp = self.conn.recv()
        return rsp.result    # def procRequest(self, req): 调整参数列表,不再需要req
    def procRequest(self):
        # 循环读取并处理收到的客户端请求
        while True:
            req = self.conn.recv()
            rsp = Response()
            rsp.id = req.id   
            if req.command == 'sayHello':
                rsp.result = self.sayHello()
            elif req.command == 'whoAreYou':
                rsp.result = self.whoAreYou()
            else:
                raise Exception("unknown command")
            
            # return rsp  # rsp也是通过connection最终传给client,而不是直接函数返回
            self.conn.send(rsp) 
slist = []
    rlist = []
    client = Client(Connection(slist, rlist))
    server = Server(Connection(rlist, slist))
    server.start()版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/crylearner/article/details/46952765