V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abersheeran
V2EX  ›  程序员

能不能脱离 gRPC 单独在 Python 项目使用 protocol buffer?

  •  
  •   abersheeran ·
    abersheeran · 2021-03-15 15:39:13 +08:00 · 1284 次点击
    这是一个创建于 1145 天前的主题,其中的信息可能已经有所发展或是发生改变。

    gRPC 实在是太蛋疼了,放在 Java 这种朴素的静态语言里这个用法一点问题都没有,但是放在 Python 这种自由度很高的动态语言里简直……

    看过我之前一个帖子的应该知道,我之前写了一个 https://github.com/abersheeran/rpc.py 可以支持直接把同步函数、异步函数、同步生成器函数、异步生成器函数直接生成 API 。

    但是生态很重要(主要是自家要用其它语言,我实在没精力写各个语言的服务端和客户端),还是得兼容 gRPC 的 proto 写法。我的想法是,Python 函数定义好(需要包含全量且不带 Any 的 type annotations 的)就可以自动生成 proto 文件以供下载,还可以使用 protocol buffer 协议去序列化。当然 http headers 也得兼容。同时也支持反向从 proto 文件生成 Python 代码。

    一番搜索之下感觉好像没有单独使用 pb 的 Python 方法,似乎只能自己编译 C++ 库?于是来问问各位。

    yunyuyuan
        1
    yunyuyuan  
       2021-03-15 15:47:34 +08:00
    所以你的需求到底是什么呢,或者说你想用 pb 文件干什么?
    FucUrFrd
        2
    FucUrFrd  
       2021-03-15 15:52:58 +08:00
    楼主, 你中文表意不清

    但是, 我认为, python 单独使用 pb, 在大公司比比皆是, 只需要官方 protoc 生成 py 文件即可, 从入门到精通, 本科学历最多 2 天
    abersheeran
        3
    abersheeran  
    OP
       2021-03-15 16:23:53 +08:00
    不好意思可能我没表达清,刚开会去了。

    我想要的是单独从 pb 文件生成 Python model 且能从 Python model 生成 pb 文件的库。
    abersheeran
        4
    abersheeran  
    OP
       2021-03-15 16:24:06 +08:00
    abersheeran
        5
    abersheeran  
    OP
       2021-03-15 16:24:47 +08:00
    序列化和反序列化功能肯定还是要包含在生成的 Python model 里的。
    MoYi123
        6
    MoYi123  
       2021-03-15 16:30:54 +08:00
    protoc xx.proto --python_out=./ 不就行了?
    DM1
        7
    DM1  
       2021-03-15 16:48:05 +08:00
    abersheeran
        8
    abersheeran  
    OP
       2021-03-15 18:52:44 +08:00
    @DM1 对对对,感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2256 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 09:24 · PVG 17:24 · LAX 02:24 · JFK 05:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.