栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

GRPC(三)python调用go语言gRPC客户端和服务器

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

GRPC(三)python调用go语言gRPC客户端和服务器

目录
  1. gRPC用的protobuf配置与介绍
  2. go语言 gRPC服务器与客户端
  3. python gRPC服务器与客户端
编译python用的protobuf

Python 调用gRPC,也需要编译对应的proto文件,编译前需要安装必备的模块

# 安装模块
pip install grpcio
# 安装编译工具
pip install grpcio-tools
# 在pb文件夹命令行运行,编译出.py文件
python.exe -m grpc_tools.protoc --python_out=. --grpc_python_out=. -I. grpc.proto

得到文件:grpc_pb2_grpc.py、grpc_pb2.py 把文件移动到python目录下,新建python文件client.py和server.py

python gRPC客户端

client.py

import grpc
import grpc_pb2
import grpc_pb2_grpc

def run():
    # 连接 rpc 服务器
    conn = grpc.insecure_channel('localhost:10086')
    # 调用 rpc 服务
    client = grpc_pb2_grpc.GRPCStub(conn)
    req = client.Ping(grpc_pb2.ping(msg='from python client'))
    print("python client received: " + req.msg)

if __name__ == '__main__':
    run()

完成客户端后,就可以用已经写好的go语言grpc服务器做测试,理论上已经可以跨语言调用了。

  • go语言服务端:go run main.go
  • python客户端:python client.py

测试通过! go语言和python已经连起来了!! 接下来编写python服务端,go语言来调用

Python gRPC服务

server.py

from concurrent import futures
import grpc
import grpc_pb2
import grpc_pb2_grpc

# 实现 proto 文件中定义的 GRPCServicer
class RpcServer(grpc_pb2_grpc.GRPCServicer):
    # 实现 proto 文件中定义的 rpc 调用
    def Ping(self, request, context):
        print(request.msg)
        return grpc_pb2.pong(msg = 'reply from python')


def serve():
    # 启动 rpc 服务
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    grpc_pb2_grpc.add_GRPCServicer_to_server(RpcServer(), server)
    server.add_insecure_port('[::]:10086')
    server.start()
    server.wait_for_termination()

if __name__ == '__main__':
    serve()

运行测试:

  • python服务:python server.py
  • go客户端:go run main.go
  • python客户端:python client.py

    可以看到,python的客户端和go的客户端都可以远程调用python的服务端,实验成功~
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/907592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号