本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下:

使用Protocol Buffers的跨平台RPC系统。

安装

使用 pip

gRPC由两个部分构成,grpcio 和 gRPC 工具, 后者是编译 protocol buffer 以及提供生成代码的插件。

使用

编写protocol buffer

使用 gRPC 首先需要做的是设计 protocol buffer。新建一个 msg.proto 文件。

以上面的这个消息服务为例,首先是规定语法,这里使用的是 proto3 的语法。接着使用 service 关键字定义服务,gRPC 提供4种 RPC 类型的服务,这里定义的是第一种单一请求单一回应,类似普通的函数调用,其他的使用到了 stream 关键字,将其放在括号里,代表这个数据是流数据。这个以后再来研究,本次先设计一个简单的RPC。

之后定义两个 message ,一个是请求的结构,一个是回应的结果。 这里表示这个数据结构是字符串,protocol buffer 还可以定义为 int32,int64,double,float 等等。这里赋予的初值可以随便填写,实际使用中,会被赋予新的值。

生成接口代码

因为之前安装好了一些辅助插件,使用这里直接可以生成。

这里会生成两个文件, msg_pb2.py 和 msg_pb2_grpc.py 。这两个文件是为后续的服务端和客户端所用。前者是定义了一些变量,例如 _MSGREQUEST 中就包含了请求函数的名字,可接受的变量,实际上还是 msg.proto 里定义的东西。

创建服务端

首先需要导入 RPC 必备的包,以及刚才生成的两个文件。

因为 RPC 应该长时间运行,考虑到性能,还需要用到并发的库。

在 Server 中,主要是实现服务,按照 msg.proto 定义的,这里需要写一个服务类 MsgServicer ,这个类需要实现之前定义的 GetMsg 。

GetMsg 接收到的请求是在 request 中, msg.proto 中定义的 name 就是 request.name ,接着在 GetMsg 中设计 msg.proto 中定义的 MsgResponse 。

之后实现启动服务的部分即可。

通过并发库,将服务端放到多进程里运行。

完整 msg_server.py 代码如下

创建客户端

客户端相对简单一些,这里我写了一个简单的客户端。

使用 grpc.insecure_channel('localhost:50051') 进行连接 服务端, 接着在这个 channel 上创建 stub , 在 msg_pb2_grpc 里可以找到 MsgServiceStub 这个类相关信息。这个 stub 可以调用远程的 GetMsg 函数。 MsgRequest 中的 name 即 msg.proto 中定义的数据。在回应里可以得到 msg.proto 中定义的 msg 。

运行

首先运行 python msg_server.py 启动服务端,接着运行 python msg_client.py 机会看到客户端接收到了服务端传来的消息。以上就是一个简单的 RPC 的使用。

总结

这里只是简单的用了一下 gRPC,关于另外三种模式,还在摸索。比起gRPC,我感觉简单 RestFul 更讨我喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python grpc 并发_在Python中使用gRPC的方法示例【h】相关推荐

  1. python grpc 并发_用Python进行gRPC接口测试(二)

    今天将继续为大家带来用Python进行gRPC接口测试的续集,上次主要讲了一下前期准备工作和简单RPC通信方式的实现,这次我们将着眼于另一类gRPC接口的通信形式--流式RPC. 一.流式RPC的三种 ...

  2. python paramiko并发_使用Python paramiko模块利用多线程实现ssh并发执行操作

    1.paramiko概述 ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography). 有了Paramiko以 ...

  3. python 多线程并发_寻找python大神!!!python如何多线程并发?

    不是大神.尝试回答一下. 首先解释下什么叫做线程,什么叫做进程,在解释这两个概念前,我们还需要明白什么叫做GIL全局解释器锁.GIL 全局解释器锁: GIL(全局解释器锁,GIL 只有cpython有 ...

  4. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  5. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  6. python将源代码转换成在html可显示的格式,Python实现将HTML转换成doc格式文件的方法示例...

    Python实现将HTML转换成doc格式文件的方法示例 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Python实现将HTML转换成doc格式文件的方法示例. ...

  7. Python实现计算圆周率π的值到任意位的方法示例

    Python实现计算圆周率π的值到任意位的方法示例 本文实例讲述了Python实现计算圆周率π的值到任意位的方法.分享给大家供大家参考,具体如下: 一.需求分析 输入想要计算到小数点后的位数,计算圆周 ...

  8. 用Python在Excel里画出蒙娜丽莎的方法示例

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com ...

  9. mysql怎么放入图片_往MySQL中存储图片的方法

    1 介绍 在设计到数据库的开发中,难免要将图片或音频文件插入到数据库中的情况.一般来说,我们可以同过插入图片文件相应的存储位置,而不是文件本身,来避免直接向数据库里插入的麻烦.但有些时候,向MySQL ...

最新文章

  1. 用python做系统程序_新手小白做毕设,想用Python做一个系统,那么该学习哪方面的知识?...
  2. C#如何获得当前程序所在的目录
  3. Android多媒体开发:录音机
  4. Python语言学习之字母E开头函数使用集锦:endswith使用用法之详细攻略
  5. 从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装
  6. Datatable/Dataset 转 JSON方法
  7. C语言灵魂篇|指针作为函数返回值
  8. 1.gloox开发环境搭建
  9. linux系统MVS安装,Ubuntu 环境 openMVG+openMVS 配置
  10. Atitit 写的计算机技术类的书 与it类紧密的学科 atiitt it学科体系化 体系树与知识点概念大总结 v3 t88.xlsx 门类 学科一级分类 专业、二级学科分类 课程 书籍 工学
  11. C语言基础四(敲打键盘、寻找资料,循环语句)请一个个字读,助于您的学会机率...
  12. 傲腾内存不支持linux吗,内存英特尔® 傲腾™常见问题
  13. 【golang】golang获取客户端ip
  14. 萧条下的养殖业成就兽药电子商务新时代
  15. 课题申报书范文_课题申请书范例
  16. 计算机怎么快捷截图桌面,计算机屏幕截图快捷方式是获取屏幕截图的四种方法. 如何在笔记本电脑上截图?...
  17. 基于Html的个人展示网站设计与实现
  18. 计算机连接不上蓝牙鼠标,蓝牙鼠标连接不上电脑怎么办_蓝牙鼠标连接不上电脑的解决办法...
  19. mysql 日志重做,設置MySQL重做日志大小
  20. 2021-07-18大学 复习网课 视频 (倍速详细篇)

热门文章

  1. 在面试中如何展示虚拟机和内存调优技能
  2. HTML5学习笔记简明版(10):废弃的元素和属性
  3. JavaScript高程第十章:DOM(上)
  4. 函数递归方法反转字符串
  5. AIX修改系统时间 命令
  6. C#完整执行存储过程的代码加实例
  7. python 面向对象实现CNN(四)
  8. Flex与.NET互操作(八):使用FluorineFx网关实现远程访问
  9. explain查看mysql语句的执行效率
  10. Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)