问题描述
在 Python 项目中使用 gRPC 进行通信,跨进程使用时,会出现阻塞或报错的情况(根据 http://gRPC.io 的版本不同,现象不同)。下面代码展示了一个跨进程使用的 DEMO,主进程向 30001 端口上的 gRPC 服务器发送请求,子进程也向相同的服务器发送请求。
def send():
channel = grpc.insecure_channel('localhost:30001')
stub = message_pb2_grpc.GreeterStub(channel)
response = stub.SayHello(message_pb2.HelloRequest(name='you'))
print(f"Greeter client received 1: " + response.message)
def main():
channel = grpc.insecure_channel('localhost:30001')
stub = message_pb2_grpc.GreeterStub(channel)
response = stub.SayHello2(message_pb2.HelloRequest(name='you'))
print("Greeter client received 2: " + response.message)
p = multiprocessing.Process(target=send)
p.start()
p.join()
if __name__ == '__main__&