python gRPC简单示例
Ubuntu18.04安装gRPC
- protobuf-compiler-grpc安装
sudo apt-get install protobuf-compiler-grpc - protobuf-compiler安装
sudo apt-get install protobuf-compiler - gRPC 的安装
pip install grpcio - 安装 ProtoBuf 相关的 python 依赖库
pip install protobuf - 安装 python grpc 的 protobuf 编译工具
pip install grpcio-tools
编写示例工程
- 工程结构

- 编写 proto 文件
在工程下新建stream目录,新建stream.proto文件,文件可名称任意syntax = "proto3";
package stream;
service StreamService {
rpc SimpleFun(RequestData) returns (ResponseData){}
}
message RequestData {
string text = 1;
} message ResponseData {
string text = 1;
}
- 编译 protobuf
切换至stream目录,执行以下命令:
python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. ./stream.proto
在
stream目录中执行编译,会生成:stream_pb2.py与stream_pb2_grpc.py,需修正stream_pb2_grpc.py的引用stream__pb2的路径
- 实现 server 端,
simple_server.py#! /usr/bin/env python
# -*- coding: utf-8 -*-
import grpc
import time
from concurrent import futures
from stream import stream_pb2, stream_pb2_grpc _ONE_DAY_IN_SECONDS = 60 * 60 * 24
_HOST = 'localhost'
_PORT = '8883' class servicer(stream_pb2_grpc.StreamServiceServicer): def SimpleFun(self, request, context):
str = request.text
print("received: " + str)
return stream_pb2.ResponseData(text=('hello,gRPC')) def serve():
grpcServer = grpc.server(futures.ThreadPoolExecutor(max_workers=4))
stream_pb2_grpc.add_StreamServiceServicer_to_server(servicer(), grpcServer)
grpcServer.add_insecure_port(_HOST + ':' + _PORT)
grpcServer.start()
try:
while True:
time.sleep(_ONE_DAY_IN_SECONDS)
except KeyboardInterrupt:
grpcServer.stop(0) if __name__ == '__main__':
serve()
- 实现 client端,
simple_client.py#! /usr/bin/env python
# -*- coding: utf-8 -*-
import grpc
from stream import stream_pb2, stream_pb2_grpc _HOST = 'localhost'
_PORT = '8883' def run():
conn = grpc.insecure_channel(_HOST + ':' + _PORT)
client = stream_pb2_grpc.StreamServiceStub(channel=conn)
response = client.SimpleFun(stream_pb2.RequestData(text='hello,world!'))
print("received: " + response.text) if __name__ == '__main__':
run()
- 执行结果
先启动simple_server.py再启动simple_client.py


- 完整代码
https://github.com/gm19900510/stream_grpc
python gRPC简单示例的更多相关文章
- Python Thrift 简单示例
本文基于Thrift-0.10,使用Python实现服务器端,使用Java实现客户端,演示了Thrift RPC调用示例.Java客户端提供两个字符串参数,Python服务器端计算这两个字符串的相似度 ...
- python psutil简单示例
python psutil简单示例 利用psutil编写简单的检测小脚本 0.安装psutil模块 ...
- Websocket - Websocket原理(握手、解密、加密)、基于Python实现简单示例
一.Websocket原理(握手.解密.加密) WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实 ...
- C#调用Python脚本的简单示例
C#调用Python脚本的简单示例 分类:Python (2311) (0) 举报 收藏 IronPython是一种在 .NET及 Mono上的 Python实现,由微软的 Jim Huguni ...
- Python自定义线程类简单示例
Python自定义线程类简单示例 这篇文章主要介绍了Python自定义线程类,结合简单实例形式分析Python线程的定义与调用相关操作技巧,需要的朋友可以参考下.具体如下: 一. 代码 # - ...
- python golang中grpc 使用示例代码详解
python 1.使用前准备,安装这三个库 pip install grpcio pip install protobuf pip install grpcio_tools 2.建立一个proto文件 ...
- robot framework环境搭建和简单示例
环境搭建 因为我的本机已经安装了python.selenium.pip等,所以还需安装以下程序 1.安装wxPythonhttp://downloads.sourceforge.net/wxpytho ...
- AJAX的简单示例:注册校验
众所周知,我们每次需要注册一个网站的用户名时,都会校验该邮箱.用户名是不是正确的格式.是不是有被使用过,密码是否符合规则,二次确认是否符合. 如果这些校验都采用form表单提交的话,会给用户带来极不好 ...
- web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例
Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...
随机推荐
- Uep弹窗showModalDialog的使用
function imageMaintain() { $.showModalDialog($$pageContextPath + "uepI/imageMaintain.do?service ...
- golang网络通信超时设置
网络通信中,为了防止长时间无响应的情况,经常会用到网络连接超时.读写超时的设置. 本文结合例子简介golang的连接超时和读写超时设置. 1.超时设置 1.1 连接超时 func DialTimeou ...
- flutter tabbar创建与显示
效果图 main.dart import 'package:flutter/material.dart'; import 'pages/index_page.dart'; void main() =& ...
- 如何修改eclipse中的maven的仓库地址
最近的有一个朋友问我如何修改eclipse的maven的本地仓库,我想了一下,这个玩意一般是不用修改的,主要是你本地安装的maven在哪个位置,一般的本地仓库位置在 C:\Users\username ...
- elasticsearch-6.2.3单机搭建
1.这里说明下,elasticsearch为了保证安全性需要创建新的用户名,需要在新的用户名下运行,本人用的是elasticsearch-6.2.3,centos7.3 2.切换目录到:cd usr/ ...
- 【HTTP】三、HTTP状态保持机制(Cookie和Session)
前面我们提到HTTP协议的特点:无连接.无状态.无连接带来的时间开销随着HTTP/1.1引入了持久连接的机制得到了解决.现在来关注其"无状态"的特点. 所谓的无状态,就是指 ...
- python基础语法之集合set
1 概念 集合是一个无需的,不重复的数组组合,它的主要作用如下: 去重,将一个列表装换成集合,会将其去重 关系测试,测试两组数据的交集,差集,并集等关系. 集合对象是一组无需排列的可哈希的值,集合成员 ...
- Oracle中的=:
dept_code=:dCode =:在这里的意思是变量绑定
- Splunk初识
目录 网址汇总 注册与下载 安装 使用 中文环境 关于APP Splunk自带的APP 创建自己的APP 添加数据 本地文件添加 通过监视添加数据 自定义列 查询语句 SPL 与 SQL对照 命令查找 ...
- 第六次学习总结&&第四次实验总结
Java实验报告 班级 1班 学号 20188390 姓名 宋志豪 实验四 类的继承 1.实验目的 (1)掌握类的继承方法: (2)变量的继承和覆盖,方法的继承.重载和覆盖实现: 2.实验内容 实验代 ...