Skip to content

SYNR-AI/simple-grpc-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

simple-grpc-example

简介

这是一个最简的 gRPC 跨语言示例项目,包含:

  • IDL: idl/simple_svr.proto
  • Go 实现: golang/(含服务端与客户端)
  • Python 实现: python/(含服务端与客户端)

你可以用 Go 服务端 ↔ Python 客户端,或 Python 服务端 ↔ Go 客户端进行互通验证。


目录结构

simple-grpc-example/
  ├── idl/                    # .proto definitions
  ├── golang/                 # Go server/client and generated code
  └── python/                 # Python server/client and generated code

前置要求

  • 已安装 protobuf 工具链 / Protobuf toolchain installed
    • protoc ≥ 25.1
  • 已安装 gRPC 相关插件 / gRPC plugins
    • Go: protoc-gen-go, protoc-gen-go-grpc
    • Python: grpcio, grpcio-tools
  • Go ≥ 1.24, Python ≥ 3.12

注:本仓库已包含生成好的代码(Go 在 golang/grpc_gen/,Python 在 python/)。如需重新生成见下文“代码生成”。


快速开始

测试时 go, python 二选一

运行 Go 版本

  1. 启动服务端
cd golang
go run ./cmd/server
  1. 运行客户端
cd golang
go run ./cmd/client

运行 Python 版本

  1. 安装依赖
cd python
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
  1. 启动服务端
python server.py
  1. 运行客户端
python client.py

语言互通示例

  • 启动 Go 服务端,然后用 Python 客户端访问
  • 启动 Python 服务端,然后用 Go 客户端访问

两种组合都应返回相同/一致的响应,便于验证协议定义与实现一致性。


代码生成

生成Go代码

# 安装插件(如未安装)
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

# 生成到 golang/grpc_gen/simple_svr/
protoc \
  -I ./idl \
  --go_out=./golang \
  --go-grpc_out=./golang \
  ./idl/simple_svr.proto

生成Python代码

python -m grpc_tools.protoc \
  -I ./idl \
  --python_out=./python \
  --grpc_python_out=./python \
  ./idl/simple_svr.proto

常见问题

  • 端口占用

    • 修改服务端监听端口,或释放占用端口
  • 版本不兼容

    • 确保 protoc 与语言插件版本匹配

许可证

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published