美文网首页
protobuf-python

protobuf-python

作者: Hmcf | 来源:发表于2020-11-15 19:47 被阅读0次
    安装protobuf环境
    • 官网下载对应的安装包,如windows下protoc-3.14.0-win64.zip
    • 配置对应的环境变量
    编写protobuf文件
    // test.proto
    syntax = "proto3";
    
    message say_hello {
        string name = 1;
        int32 age = 2;
    }
    // 对应的嵌套结构、数组等可设置对应的关键字配置
    
    根据test.proto文件生成python文件

    protoc --python_out=./ test.proto

    编写python服务和客户端使用
    • server.py
    """
    Author: lxcos
    Date: 2020-11-11 16:42:12
    """
    
    import protoconf_pb2 as pb2
    from flask import Flask
    
    
    # 从给出的字符串中解析一条message
    # sh.ParseFromString(msg)
    # print(sh)
    
    # print(f'name {sh.name}, {sh.age}')
    app = Flask(__name__)
    
    
    @app.route('/')
    def index():
        sh = pb2.say_hello()
        sh.name = "chen"
        sh.age = 23
    
        # 序列化这个message和以字符串的方式返回。 注意,这是二进行字节,不是一个文本; 我们只使用str类型作为一个方便的容器。
        msg = sh.SerializeToString()
        # print(msg)
        return msg
    
    
    if __name__ == '__main__':
        app.debug = True  # 设置调试模式,生产模式的时候要关掉debug
        app.run()
    
    • client.py
    # encoding: utf-8
    """
    Author: lxcos
    Date: 2020-11-11 16:42:12
    """
    
    import requests
    import protoconf_pb2 as pb2
    
    msg = requests.get("http://127.0.0.1:5000/")
    
    sh = pb2.say_hello()
    sh.ParseFromString(msg.content)
    
    print(sh.name, sh.age)
    

    相关文章

      网友评论

          本文标题:protobuf-python

          本文链接:https://www.haomeiwen.com/subject/cvfobktx.html