Python gRPC 示例项目教程

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.pyclient.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: 定义了两个服务 serverclient,分别用于启动服务端和客户端。server 服务监听 50051 端口,client 服务依赖于 server 服务,确保服务端启动后再启动客户端。

通过以上配置,可以使用 docker-compose up 命令一键启动整个项目,方便进行开发和测试。

python-grpc-demo Python + gRPC demos 项目地址: https://gitcode.com/gh_mirrors/py/python-grpc-demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邹澜鹤Gardener

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值