美文网首页
gRPC入门-异构系统之间rpc(python客户端)

gRPC入门-异构系统之间rpc(python客户端)

作者: ted005 | 来源:发表于2018-09-24 18:21 被阅读87次

之前的程序中,客户端和服务端都是基于Java平台,而rpc的使用场景常常式异构系统之间的调用过程,因此本文使用python开发客户端,调用java的服务端。

  • 本例依赖pythonpip,安装python后自动会包含pip。安装过程参考python官网

  • 安装python版本的gRPCgRPC tools,其中gRPC tools包含proto buf编译器和代码生成插件。

        python -m pip install grpcio
        python -m pip install grpcio-tools googleapis-common-protos
    
  • pthon客户端与java服务端之前通信,使用相同的.proto文件作为契约:

        syntax = "proto3";
    
        package com.mattie.grpc;
    
        option java_package = "com.mattie.grpc";
        option java_outer_classname = "HelloWorldProtos";
    
        service Greeter {
          rpc SayHello (HelloRequest) returns (HelloReply) {}
    
          rpc biStream (stream HelloStreamRequest) returns (stream HelloStreamResponse) {};
        }
    
        message HelloRequest {
          string message = 1;
        }
    
        message HelloReply {
          string message = 1;
        }
    
        message HelloStreamRequest {
          string request_info = 1;
        }
    
        message HelloStreamResponse {
          string response_info = 1;
        }
    
  • 使用下面的命令,根据.proto文件生成python版本的代码: helloworld_pb2.pyhelloworld_pb2_grpc.py

        python -m grpc_tools.protoc -I C:\Users\18616\Documents\grpc_demo\src\main\proto --python_out=C:\Users\18616\Documents\grpc_demo\python_client --grpc_python_out=C:\Users\18616\Documents\grpc_demo\python_client C:\Users\18616\Documents\grpc_demo\src\main\proto\helloworld.proto
    

其中:

  1. helloworld_pb2.py中包含操作契约的类
  2. helloworld_pb2_grpc.py包含自动生成的客户端和服务端代码(本例子不使用这里生成的服务端代码,只使用客户端)
  • 创建客户端client.py,服务端仍然使用之前工程的MyServerMyService

      from __future__ import print_function
    
      import grpc
    
      import helloworld_pb2
      import helloworld_pb2_grpc
    
      def run():
          with grpc.insecure_channel('localhost:8899') as channel:
              stub = helloworld_pb2_grpc.GreeterStub(channel)
              response = stub.SayHello(helloworld_pb2.HelloRequest(message='you'))
          print("Greeter client received: " + response.message)
    
      if __name__ == '__main__':
          run()
    
  • 启动MyServerclient.py:

     python client.py

相关文章

  • gRPC入门-异构系统之间rpc(python客户端)

    之前的程序中,客户端和服务端都是基于Java平台,而rpc的使用场景常常式异构系统之间的调用过程,因此本文使用py...

  • 微服务跨语言 gRPC 之 Java & Python

    本文旨在说明 spring-boot-starter-grpc 框架与 Python 之间跨语言 RPC 调用的友...

  • grpc初探

    1 grpc的定义 grpc good rpc grpc使用protobuf文件声明服务,服务端和客户端都通使用...

  • golang grpc keepalive

    最近遇到 grpc 客户端报错 rpc error: code = Unavailable desc = tran...

  • gRPC使用

    gRPC gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架。 gRPC使客户端和...

  • gRPC 学习笔记

     gRPC 学习笔记,记录gprc一些基本概念.  gRPC正如其他 RPC 系统,gRPC 基于如下思想:定义一...

  • gRPC

    基础:GRPC的产生动机和设计原则grpc| python 实战 grpcPython版gRPC入门实验 - 知乎...

  • Thrift基础

    1.概述 Apache Thrift是一个多语言并存的异构系统之间的RPC调用方案,当然也可以作为同构系统之间的R...

  • gRPC 简介并实战——文末附源码

    1. 介绍 gRPC 是一个高性能的开源 RPC 框架,最初由 Google 开发。 RPC 是什么?在客户端应用...

  • golang grpc

    golang grpc rpc种类 grpc含义 gRPC是Google的RPC框架,开源、高性能、跨语言,基于H...

网友评论

      本文标题:gRPC入门-异构系统之间rpc(python客户端)

      本文链接:https://www.haomeiwen.com/subject/knkhoftx.html