Python gRPC 示例项目教程
python-grpc-demo Python + gRPC demos 项目地址: https://gitcode.com/gh_mirrors/py/python-grpc-demo
1. 项目目录结构及介绍
python-grpc-demo/
├── demo1/
│ ├── client.py
│ ├── server.py
│ └── proto/
│ └── demo.proto
├── demo2/
│ ├── client.py
│ ├── server.py
│ └── proto/
│ └── demo.proto
├── grpc-middleware/
│ ├── interceptor.py
│ └── middleware.py
├── .gitignore
├── LICENSE
├── README.md
└── docker-compose.yml
目录结构说明
- demo1/ 和 demo2/: 包含两个不同的 gRPC 示例项目,每个项目包含客户端 (
client.py
) 和服务端 (server.py
) 的实现,以及定义服务接口的proto
文件夹。 - grpc-middleware/: 包含 gRPC 中间件的实现,如拦截器 (
interceptor.py
) 和中间件 (middleware.py
)。 - .gitignore: Git 忽略文件,指定哪些文件或目录不需要被版本控制。
- LICENSE: 项目使用的开源许可证,本项目使用 MIT 许可证。
- README.md: 项目的说明文档,包含项目的基本信息和使用说明。
- docker-compose.yml: Docker 配置文件,用于定义和运行多个 Docker 容器。
2. 项目启动文件介绍
demo1/server.py
# 启动 demo1 服务端
from concurrent import futures
import grpc
import demo_pb2
import demo_pb2_grpc
class DemoServicer(demo_pb2_grpc.DemoServicer):
def SayHello(self, request, context):
return demo_pb2.HelloReply(message='Hello, %s!' % request.name)
def serve():
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
demo_pb2_grpc.add_DemoServicer_to_server(DemoServicer(), server)
server.add_insecure_port('[::]:50051')
server.start()
server.wait_for_termination()
if __name__ == '__main__':
serve()
demo1/client.py
# 启动 demo1 客户端
import grpc
import demo_pb2
import demo_pb2_grpc
def run():
with grpc.insecure_channel('localhost:50051') as channel:
stub = demo_pb2_grpc.DemoStub(channel)
response = stub.SayHello(demo_pb2.HelloRequest(name='world'))
print("Greeter client received: " + response.message)
if __name__ == '__main__':
run()
demo2/server.py 和 demo2/client.py
与 demo1
类似,demo2
也包含 server.py
和 client.py
,用于启动服务端和客户端。
3. 项目配置文件介绍
docker-compose.yml
version: '3.8'
services:
server:
build: .
command: python demo1/server.py
ports:
- "50051:50051"
client:
build: .
command: python demo1/client.py
depends_on:
- server
配置文件说明
- docker-compose.yml: 定义了两个服务
server
和client
,分别用于启动服务端和客户端。server
服务监听50051
端口,client
服务依赖于server
服务,确保服务端启动后再启动客户端。
通过以上配置,可以使用 docker-compose up
命令一键启动整个项目,方便进行开发和测试。
python-grpc-demo Python + gRPC demos 项目地址: https://gitcode.com/gh_mirrors/py/python-grpc-demo