python post protobuf

本文聚焦于使用Python发送protobuf数据,涵盖安装protobuf、在Python中安装protobuf、创建my_bidding.proto文件、编译proto文件以及编写Python脚本等步骤,还给出了相关示例,编译成功会生成my_bidding_pb2.py文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要讲述如何使用Python发送protobuf数据。

安装protobuf

tar zxvf protobuf-2.6.1.tar.gz
cd protobuf-2.6.1
./configure
make
make install

安装成功。

// 查看protoc版本
protoc --version

python安装protobuf

cd protobuf-2.6.1/python
python setup.py build
python setup.py install

环境搭建完毕,下面给个demo。

创建my_bidding.proto

package tutorial;

message Person {
    required string name = 1;
    optional int32 age = 2;
    repeated BankCard bankcard = 3;
    message BankCard {
        required string id = 1;
    }
    optional RealEstate estate = 4;
    message RealEstate {
        required string address = 1;
        optional int32 value = 2;
    }
    optional bool isSingle = 5;
    optional SexualOrientation orientation = 6;
    enum SexualOrientation {
        ManOnly = 1;
        WomanOnly = 2;
        BiSexual = 3;
    }
}

编译proto文件

protoc -I=. --python_out=. ./my_bidding.proto

编译成功,会产生my_bidding_pb2.py。

编写Python脚本

# python2
# coding = utf-8

import my_bidding_pb2
import httplib

person = my_bidding_pb2.Person()
person.name = 'logan'
person.age = 25
person.isSingle = False
person.orientation = 3

bankcard1 = person.bankcard.add()
bankcard1.id = '100'

bankcard2 = person.bankcard.add()
bankcard2.id = '101'

real_estate = person.estate
real_estate.address = 'beijing'
real_estate.value = 1000

print person

data = person.SerializeToString()

CONTENT_TYPE = "application/octet-stream"
CONTENT_TYPE_HEADER = "Content-type"

conn = httplib.HTTPConnection('sever_host', 'server_port')
conn.request('POST', 'server_path', data,
             {CONTENT_TYPE_HEADER: CONTENT_TYPE})
response = conn.getresponse()

print response
print response.status
print response.read()

 

转载于:https://www.cnblogs.com/gattaca/p/7240763.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值