python post protobuf


本文主要講述如何使用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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM