4

Python从门到精通(九):Grpc实现

 1 year ago
source link: https://blog.51cto.com/arch/5431551
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

实话来讲,真不赞成用python写业务服务端代码。本章是用python语言实现的一套grpc框架,例子不太复杂,实现了就是​ ​基于grpc从零开始搭建一个准生产分布式应用(系列)​​ 这里的例子。笔者在实现demo时踩了好多坑,因为网上资料很少。

程序下载地址:​ ​demo-python源码​​ 提取码: 26kv

一、安装必要的库

下表中的包的版本有些一定要一样,不然会出现应用不了protobuf的问题。

pip3 install grpcio==1.43.0
pip3 install grpcio-tools==1.43.0

pip3 install protobuf==3.20.1

二、运行示例程序

可看下源码中的readme.md文件。进入到项目根路径下执行,--python_out一定要指定项目根路径(这是官司实现的一个规范,不能换目录)。

python3 -m grpc_tools.protoc --python_out=../ --grpc_python_out=../ -I=. ./*.proto

然后依次运行:

服务端:ApplicationServerStart.py
客户端:SystemlogTest.py

三、命令行测试方法

python不能用图行工具测试,命令行测试方式如下

brew install grpcurl
//查看GRPC服务所有的服务列表
grpcurl --plaintext 127.0.0.1:9898 list
输出如下:
/*grpc.health.v1.Health
grpc.reflection.v1alpha.ServerReflection
net.devh.boot.grpc.example.MyService
*/

//查看某一个接口提供的服务接口
grpcurl --plaintext 127.0.0.1:9898 list net.devh.boot.grpc.example.MyService
输出如下:
/*net.devh.boot.grpc.example.MyService.SayHello*/

//模拟访问
grpcurl --plaintext -d '{"name": "test"}' 127.0.0.1:9898 net.devh.boot.grpc.example.MyService/sayHello

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK