各位大佬有没有人用过 grpc , go 和 Python 项目互调过,有一个问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
longmeier90

各位大佬有没有人用过 grpc , go 和 Python 项目互调过,有一个问题

  •  
  •   longmeier90 2022 年 2 月 23 日 3649 次点击
    这是一个创建于 1522 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在搞微服务,学习了一下 grpc ,试着写了连个测试,发现一个问题

    go-client 无法调用 python-server 错误 error:code = Unimplemented desc = RPC method not implemented /Greeter/SayHello; 但是 python-client 访问 python-server 、go-server 都没问题,go-client 访问 go-server 也没有问题。查了一下都说是包名称的不一样。我把两边的 proto 文件弄成一模一样重新生成也还是报这个 error 
    --------python------- syntax = "proto3"; package proto; service Greeter{ rpc SayHello (HelloRequest) returns (HelloReply); } message HelloRequest{ string name = 1; } message HelloReply{ string message = 1; } --------go---------- syntax = "proto3"; option go_package = ".;proto"; package proto; service Greeter{ rpc SayHello (HelloRequest) returns (HelloReply); } message HelloRequest{ string name = 1; } message HelloReply{ string message = 1; } 
    8 条回复    2022-02-23 14:41:22 +08:00
    leon0318
        1
    leon0318  
       2022 年 2 月 23 日 via iPhone
    报错信息不是说 implement 问题吗?
    CEBBCAT
        2
    CEBBCAT  
       2022 年 2 月 23 日 via iPhone
    我只是想问一下,这两边的 proto 文件是不是应该共享一个?
    longmeier90
        3
    longmeier90  
    OP
       2022 年 2 月 23 日
    @CEBBCAT 怎么共享,两个项目有可能都不在同一台服务器上。
    longmeier90
        4
    longmeier90  
    OP
       2022 年 2 月 23 日
    @leonme 是呀,我没指定包名称的时候 提示 RPC method not implemented /Greeter/SayHello ;当我指定包名称 proto 时提示 RPC method not implemented /protol.Greeter/SayHello 。就单单 go-client 无法调用 python-server;
    CEBBCAT
        5
    CEBBCAT  
       2022 年 2 月 23 日
    @longmeier90 拿 message 举例,因为这些定义是大家都要用的,那么可以把 message 放到单独一个仓库,构建时引入,然后 protoc 编译

    另外查到了一个问题 https://stackoverflow.com/q/55922886
    masterclock
        6
    masterclock  
       2022 年 2 月 23 日
    reflection 查看 python-server 端的 method 名字是什么
    log 、抓包等方法查看 go-client 发出的请求的 method

    不共享 proto 的 buf 的模式挺常见的,但确实麻烦
    https://docs.buf.build buf 用来集中管理很不错
    so1n
        7
    so1n  
       2022 年 2 月 23 日
    你可以抽到一个 common 仓库里面,这个仓库用一个文件夹存 proto 文件 然后每次当一个版本进行提交,提交的时候使用工具或者 ci 在提交时顺便用工具生成对应语言的代码并打包(或者这个仓库就是一个包), 这样对应的语言就可以用到这个包了
    longmeier90
        8
    longmeier90  
    OP
       2022 年 2 月 23 日
    貌似这个问题解决啦, 我把 python-server 服务的端口由 50051 -> 9400 ; go-client 就可以正常调用啦。有点搞呀
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2412 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 01:02 PVG 09:02 LAX 18:02 JFK 21:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86