【在python中使用谷歌protobuffers反射】教程文章相关的互联网学习教程文章

在Python 3.4里使用Protobuf 2.6

在开发领域里,协议的使用是经常的事情,只要通讯的地方,就要使用到。比如客户端与服务器通讯,比如嵌入式系统与上位机系统通讯,比如不同进程之间进行数据通讯,这些地方都需要使用。但协议的定义的方式也有很多种,最常使用就是开发者自己定义的格式,也有使用XML等格式,不过这两种方式都存在不足之处的。首先来看自己定义的格式,如果采用二进制的方式,要调试协议格式,要处理不同的位置,要处理动态增加的字段等等,另外还要...

python protobuf序列化repeated运用

下面是proto描述文件的定义message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; } message AddressBook { repeated Person person = 1; }  在python中利用google...

python如何通过protobuf实现rpc【图】

由于项目组现在用的rpc是基于google protobuf rpc协议实现的,所以花了点时间了解下protobuf rpc。rpc对于做分布式系统的人来说肯定不陌生,对于rpc不了解的童鞋可以自行google,这里只是做个简单的介绍。rpc的主要功能是让分布式系统的实现更为简单,为提供强大的远程调用而不损失本地调用语义的简洁性。为了实现这个目标,rpc框架需要提供一种透明调用机制让使用者不必显示区分本地调用还是远程调用。rpc架构涉及的组件如下:客户...

Go+Python双语言混合开发 第三部分 Go开发学习 第5章 protobuf3和grpc进阶 学习笔记【代码】

Go+Python双语言混合开发 第三部分 Go开发学习 第5章 protobuf3和grpc进阶 学习笔记 第5章 protobuf3和grpc进阶 protobuf 官方文档参考 官方地址: https://developers.google.com/protocol-buffers/docs/proto3 5.1 定义一个消息类型 先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的页数,以及每一页多少条查询结果。可以采用如下的方式来定义消息类...

python使用protobuf协议传输固定格式协议数据【图】

protobuf是什么 protobuf 是google开源的一个序列化框架,类似xml,json,最大的特点是基于二进制,比传统的XML表示同样一段内容要短小得多。还可以定义一些可选字段,用于服务端与客户端通信 protobuf在工作中的运用 背景:由于我们业务开发主要是C++,在进行测试时,业务流程很长,经常会自己写数据到mq,而mq的内容更多是pb(protobuf简称)协议,所以我需要模拟pb协议,往mq中写数据,现在我们就先看如何写pb协议的数据,如果我...

go-excel转protobuf升级到python3【代码】

title: go-excel转protobuf升级到python3 categories: Go tags: [go, excel, protobuf, python3] date: 2020-01-15 16:27:24 comments: falsego- excel转 protobuf 升级到python3前篇 网上找到的 xls_deploy_tool.py 转换工具是 python2 版本的, 这里把它升级到 python3升级到 python3py3 已支持中文, 不需要 unicode 转换, 干掉字符串 count 修改, comment.count("\n") 修改为 str.count(comment, "\n")日志打印, print "" 改为 p...

在protobuf python API中如何将元素添加到嵌套消息重复属性?【代码】

message items {message require {optional bool require_sex = 1; //repeated int32 fate = 2 [packed = true];}optional int32 sub_type = 1;repeated int32 levels = 2 [packed = true]; }我试过了raw.require.require_sex = 1 raw.require.fate.append(1) raw.require.fate.extend([2,3])出现错误AttributeError:“属性”对象没有属性“附加” 但第一级重复字段可以正常工作:raw = down_pb2.items() raw.levels.append(4)不支...

如何自检Python中所有有效的protobuf枚举值?【代码】

假设我有一个protobufenum Color {RED = 0;GREEN = 1;BLUE = 2; };如何从Python获取所有已定义值和/或名称的列表?解决方法:枚举就像python中的字典一样, 您将从dict.keys()获得键(名称),并从dict.values()获得值.

python-将protobuf对象写入JSON文件【代码】

我有这样的old.JSON文件:[{"id": "333333","creation_timestamp": 0,"type": "MEDICAL","owner": "MED.com","datafiles": ["stomach.data", "heart.data"] }]然后,我基于.proto文件创建一个对象:message Dataset {string id = 1;uint64 creation_timestamp = 2;string type = 3;string owner = 4;repeated string datafiles = 6; }现在,我要保存该对象,然后将该对象保存回其他.JSON文件.我这样做:import json from google.proto...

python-在Beam中读取和写入序列化的protobuf【代码】

我想将序列化的protobuf消息的PCollection写入文本文件并将其读回应该很容易.但是经过几次尝试,我却没有这样做.如果有人有任何评论,将不胜感激.// definition of proto.syntax = "proto3"; package test; message PhoneNumber {string number = 1;string country = 2; }我下面的python代码实现了一个简单的Beam管道,可将文本写入序列化的protobuf.# Test python code import apache_beam as beam from apache_beam.options.pipelin...

python-Apache Beam Google数据存储区ReadFromDatastore实体protobuf【代码】

我正在尝试使用Apache Beam的Google数据存储区api来ReadFromDatastorep = beam.Pipeline(options=options) (p| 'Read from Datastore' >> ReadFromDatastore(gcloud_options.project, query)| 'reformat' >> beam.Map(reformat)| 'Write To Datastore' >> WriteToDatastore(gcloud_options.project))传递给我的格式化函数的对象是type google.cloud.proto.datastore.v1.entity_pb2.Entity 它采用protobuf格式,很难修改...

Protobuf到python中的json【代码】

我有一个对象,我在Python中使用protobuf反序列化.当我打印对象时,它看起来像一个python对象,但是当我尝试将其转换为json时,我遇到了各种各样的问题. 例如,如果我使用json.dumps(),我得到的对象(来自protoc的生成代码)不包含_ dict _错误. 如果我使用jsonpickle我得到UnicodeDecodeError:’utf8’编解码器无法解码位置97中的字节0x9d:无效的起始字节. 下面的测试代码使用jsonpickle,错误如上所示.if len(sys.argv) < 2:print ("Er...

python – 没有名为google.protobuf的模块【代码】

我正在努力实现谷歌的深刻梦想.由于某些奇怪的原因,我一直在努ImportError: No module named google.protobuf在尝试导入protobuf之后.我使用sudo install protobuf安装了protobuf.我正在运行python 2.7 OSX Yosemite 10.10.3. 我认为这可能是部署位置问题,但我无法在网上找到任何关于它的内容.目前正在部署到/usr/local/lib/python2.7/site-packages.解决方法:如果您运行的是python 2.7.11或其他类似版本,还有另一种可能性,sudo pi...

自动将protobuf规范编译为setup.py中的python类【代码】

我有一个python项目,它使用谷歌protobufs作为通过网络进行通信的消息格式.使用protoc程序直接从.proto文件生成python文件.如何为项目配置setup.py文件,以便它自动调用protoc命令?解决方法:在类似的情况下,我最终得到了这个代码(setup.py,但是以允许提取到一些外部Python模块以供重用的方式编写).请注意,我从protobuf源代码分发的setup.py文件中获取了generate_proto函数和几个想法.from __future__ import print_functionimport o...

如何使用Python protobuf读取二进制C protobuf数据?【代码】

Python protobuf的Python版本仅提供给我们:SerializeAsString()C版本给我们两个:SerializeToArray(...) SerializeAsString()我们以二进制格式写入我们的C文件,我们希望保持这种方式.那说,有没有办法将二进制数据读入Python并解析它就好像它是一个字符串? 这是正确的做法吗?binary = get_binary_data() binary_size = get_binary_size()string = None for i in range(len(binary_size)):string += imessage = new MyMessage() m...