码迷,mamicode.com
首页 > 其他好文 > 详细

(一)grpc-创建一个简单的grpc 客户端和服务器

时间:2021-06-06 19:42:28      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:turn   需要   ack   rgba   response   coding   ESS   学习   pre   

创建一个简单的grpc 客户端和服务端

最近在工作中需要用到grpc ,学习来源于bilibili dewei_zhang的视频

创建一个protobuf 文件:

hello_world.proto

// 定义一个服务的框架,服务名和服务下的函数名,以及函数下的request 和response,
// 和resquest 和response 对应的参数

//使用哪种protobuf 协议
syntax="proto3";
package test;

//服务名:Mianmian,以及里面定义的rpc函数HelloMian
service Mianmian{
    rpc HelloMian(HelloMianReq) returns(HelloMianReply)
    {}   //添加一些插件
}

message HelloMianReq{
    string  name = 1;
    int32 age =2;
}

message HelloMianReply{
    string result =1;
}

 

生成对应的python文件:hello_world_pb2.py ,hello_world_pb2_grpc.py

python -m  grpc_tools.protoc -I. --python_out=. --grpc_python_out=. hello_world.proto

 

编写service 代码:

service.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#@Time  : 2021/6/5 13:37
#@Author: Tana
#@File  : service.py

import grpc
import hello_world_pb2 as pb2
import hello_world_pb2_grpc as pb2_grpc
from concurrent import futures
import time
class Mianmian(pb2_grpc.MianmianServicer):
    def HelloMian(self, request, context):
        name=request.name
        age=request.age

        result={"code":"succeed",
            "data":fmy name is {name},i am {age} years old
        }
        return pb2.HelloMianReply(result=result)

def run():
    #定义grpc线程数量
    grpc_server=grpc.server(futures.ThreadPoolExecutor(max_workers=4))
    #注册服务到grpc_server
    pb2_grpc.add_MianmianServicer_to_server(Mianmian(),grpc_server)
    #绑定ip和端口号
    grpc_server.add_insecure_port(0.0.0.0:5001)
    print("server will start at 0.0.0.0:5001")
    #这个start 在python里面会启动一下就停了,所以需要写一个无限循环
    grpc_server.start()
    try:
        while 1:
            print("1")
            time.sleep(3600)

    except KeyboardInterrupt:
        grpc_server.stop(0)

if __name__=="__main__":
    run()

 

编写client端 代码:

client.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#@Time  : 2021/6/6 15:26
#@Author: Tana
#@File  : client.py
import grpc
import hello_world_pb2_grpc as pb2_grpc
import hello_world_pb2 as pb2

def run():
    #定义一个频道,绑定服务器端对应的ip 和端口号
    conn = grpc.insecure_channel(0.0.0.0:5000)
    #生成客户端
    client = pb2_grpc.MianmianStub(channel=conn)
    response = client.HelloMian(pb2.HelloMianReq(
        name="mianmian",
        age=18
    ))
    print(response.result)
if  __name__==__main__:
    run()

 

 

 

(一)grpc-创建一个简单的grpc 客户端和服务器

标签:turn   需要   ack   rgba   response   coding   ESS   学习   pre   

原文地址:https://www.cnblogs.com/yan-2010/p/14854127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!