Python-RPC: 多线程 RPC 服务器

it2022-05-05  168

RPC 服务器

在前面的实现中,我们只实现了RPC服务器的最简易模型——单进程单线程。

为了能让RPC服务器同时处理多个客户端的请求,提升性能,我们可以改写服务器,采用多线程、多进程等。

在此我们仅实现多线程模型,其余不再赘述。

多线程服务器

import threading class ThreadServer(object): def __init__(self, host, port, handlers): self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.host = host self.port = port self.sock.bind((host, port)) self.handlers = handlers def serve(self): """ 开始服务 """ self.sock.listen(128) print("开始监听") while True: conn, addr = self.sock.accept() print("建立链接%s" % str(addr)) t = threading.Thread(target=self.handle, args=(conn,)) t.start() def handle(self, client): stub = ServerStub(client, self.handlers) try: while True: stub.process() except EOFError: print("客户端关闭连接") client.close()

最新回复(0)