前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >grpc官方文档实验与翻译(python

grpc官方文档实验与翻译(python

作者头像
py3study
发布2020-01-09 14:28:10
1K0
发布2020-01-09 14:28:10
举报
文章被收录于专栏:python3

tensorflow分布式与tensorflow serving底层通信都是是用的grpc,所以就看了一下grpc的基本用法(python版)

首先是环境的安装,先要更新pip到version8或者以上

代码语言:javascript
复制
$ python -m pip install --upgrade pip

为了不影响自带的python环境所以我重新建立了个环境来实验,我的python环境是conda所以用conda重新建立了个python3.5的环境

代码语言:javascript
复制
$conda create --name py35tf python=3.5
$source activate py35tf

如果不是使用conda的小伙伴可以安装virtualenv来完成,可以使用conda env list来查看自己创立的环境

接下来还是工具的安装

代码语言:javascript
复制
$ python -m pip install grpcio
$ python -m pip install grpcio-tools
$ pip install protobuf

protobuf其实是google自己开发的类似xml一类的序列化的工具,等会要用到,所以也要安装

接下来我们首先试着使用一下官方给予的example,然后再按照自己的需求更新proto文件 服务端和客户端的python文件

从github上clone官方教程

代码语言:javascript
复制
$ # Clone the repository to get the example code:
$ git clone https://github.com/grpc/grpc
$ # Navigate to the "hello, world" Python example:
$ cd grpc/examples/python/helloworld

然后运行greeter_server.py和greeter_client.py,为了更好的观察,我在运行server.时加了&让它后台运行

代码语言:javascript
复制
$ python greeter_server.py &
$ python greeter_client.py

这时候窗口会输出Greeter client received:Hello,you!

然后使用jobs查看一下服务端的进程ID,再使用kill ID直接带走服务端进程,准备写一个自己定义的服务了

首先需要修改proro文件来定义服务,主要是添加了SayHelloAgain

代码语言:javascript
复制
syntax = "proto3";
// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
  // Sends another greeting
  rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

官方文档中没有第一句,编译成python时老是报错,接下来开始编译成python接口

代码语言:javascript
复制
$ python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. ./helloworld.proto

这样就把两个py接口文件都更新好了,现在更新服务端文件,原来Greeter类下只有SayHello一个方法,现在添加一下SayHelloAgain

代码语言:javascript
复制
def SayHelloAgain(self, request, context):
    return helloworld_pb2.HelloReply(message='Hello again, %s!' % request.name)

现在再更改一下客户端的调用接口,添加调用和输出的代码

代码语言:javascript
复制
  response = stub.SayHelloAgain(helloworld_pb2.HelloRequest(name='you'))
  print("Greeter client received: " + response.message)

完成后再运行服务端和客户端,来个截图收工,有空再试着使用tensorflow serving

(既要实习又要发论文的日子好难熬~.~)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档