栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

gRPC(Python)总结+踩坑记录

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

gRPC(Python)总结+踩坑记录

  总结一下在使用gRPC的过程中踩过的那些坑, 一定要仔细看官方文档!!!
  参考文档:
    Language Guide (proto3)
    Python Generated Code

1.前言
  出于项目需要,使用Python对gRPC进行二次开发。以前从没有接触过相关的概念,对于RPC、xml、json的了解也只限于听过名字的程度。初步接触gRPC的推荐阅读资源:
    gRPC官方(基本上所有资料都在这里,但全英文和一些专有名词看得我头疼)
    Protobuf3语言指南(中文翻译版)
    gRPC | Python视频教程
    grpc| python 实战 grpc
    python grpc框架之一 简单示例
    Carson带你学序列化:手把手带你分析 Protocol Buffer使用源码


2.开发流程

  使用如下命令将proto文件编译为两个可供二次开发使用的python文件(文件具体内容不用管,也不是很看得懂)

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

xxx_pb2.py —— 和gRPC通信时双方交互的数据格式有关
xxx_pb2_grpc.py —— 和gRPC通信双方有关

  使用Python进行二次开发的时候直接调用这两个文件里的方法就行了。


3.proto
  proto具体语法,待补充


4.Python二次开发
  在使用Python进行gRPC的二次开发的时候,我们一般会自定义client和server,两者的主要目标如下:
    client——将按照proto格式打包好的数据发送给对应的server
    server——实现预定义的RPC功能,接收并解析数据,回复client
  具体实现的例子可参考前言中的相关资源。


5.踩过的坑
bytes
  使用bytes()将变量转换为bytes类型时,有以下三种情况:
    如果是数字,则不需要指定编码方式;
    如果是string,则需要指定编码方式;
    如果是数组,则数组里的数字需要在0-256之间。

序列化/反序列化
  实际上转换为bytes类型时,应该使用SerializeToString()方法

  相应的,反序列化的时候使用ParseFromString()方法

   bytes&序列化/反序列化示例



To be a sailor of the world bound for all ports.
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980475.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号