首页 > 其他 > 详细

learning grpc

时间:2019-05-07 17:16:35      阅读:159      评论:0      收藏:0      [点我收藏+]

helloworld.proto代码如下:

syntax = "proto3";
package helloworld;

service Greeter{
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

 解释:定义了一个Greeter的服务,会跟下面的server.py里面的class类名同名。sayhello是整个消息来回过程中client要调用的定义在server端的函数名。HelloRequest是client发送给server消息时用的函数。把需要传给server的值赋给name这个变量。server端靠HelloReply函数接收消息,消息在request里。通过request.name得到name的值。把该值赋给message后通过HelloReply函数传给client。client从HelloRequest函数的返回值里得到server发来的回应,该回应.mesage可以取出里面的值。

 

client.py代码如下:

#coding:utf-8
from __future__ import print_function
import grpc
import helloworld_pb2
import helloworld_pb2_grpc
import time

def hello(name):
    # NOTE(gRPC Python Team): .close() is possible on a channel and should be
    # used in circumstances in which the with statement does not fit the needs
    # of the code.
    with grpc.insecure_channel(127.0.0.1:50051) as channel:
        stub =helloworld_pb2_grpc.GreeterStub(channel)
        response = stub.SayHello(helloworld_pb2.HelloRequest(name=name))
        print(response.message)

if __name__ == __main__:
    hello("1234")
 
 
server.py代码如下:
from concurrent import futures
import time
import grpc
import helloworld_pb2
import helloworld_pb2_grpc
_ONE_DAY_IN_SECONDS = 60 * 60 * 24

class Greeter(helloworld_pb2_grpc.GreeterServicer):
    # 工作函数
    def SayHello(self, request, context):
        return helloworld_pb2.HelloReply(message=Hello, %s! % request.name)


def serve():
    # gRPC 服务器
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    helloworld_pb2_grpc.add_GreeterServicer_to_server(Greeter(), server)
    server.add_insecure_port([::]:50051)
    server.start()  # start() 不会阻塞,如果运行时你的代码没有其它的事情可做,你可能需要循环等待。
    try:
        while True:
            time.sleep(_ONE_DAY_IN_SECONDS)
    except KeyboardInterrupt:
        server.stop(0)

if __name__ == __main__:
    serve()

 

learning grpc

原文:https://www.cnblogs.com/datascience1/p/10826210.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!