grpc python 多进程_gRPC 跨进程使用引发的问题

本文介绍了在Python中使用gRPC进行跨进程通信时遇到的问题,包括Socket操作非套接字的错误。通过分析,发现这是由于gRPC的HTTP2长连接特性导致的。解决方案包括在fork前关闭Channel,或者使用with语句自动管理Channel。
摘要由CSDN通过智能技术生成

问题描述

在 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__&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值