Python gRPC 示例项目教程
python-grpc-demoPython + 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
│ └── proto/
│ └── demo.proto
├── .gitignore
├── LICENSE
├── README.md
└── docker-compose.yml
demo1/
和demo2/
:包含基本的 gRPC 客户端和服务器示例。grpc-middleware/
:包含 gRPC 中间件示例。proto/
:包含协议缓冲区文件(.proto
)。.gitignore
:Git 忽略文件。LICENSE
:项目许可证。README.md
:项目说明文档。docker-compose.yml
:用于启动 Docker 容器的配置文件。
2. 项目的启动文件介绍
demo1/server.py
from concurrent import futures
import time
import grpc
import demo_pb2
import demo_pb2_grpc
class DemoServicer(demo_pb2_grpc.DemoServicer):
def SayHello(self, request, context):
response = demo_pb2.HelloResponse()
response.message = f"Hello, {request.name}!"
return response
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()
try:
while True:
time.sleep(86400)
except KeyboardInterrupt:
server.stop(0)
if __name__ == '__main__':
serve()
demo1/client.py
import grpc
import demo_pb2
import demo_pb2_grpc
def run():
channel = grpc.insecure_channel('localhost:50051')
stub = demo_pb2_grpc.DemoStub(channel)
response = stub.SayHello(demo_pb2.HelloRequest(name='World'))
print("Client received: " + response.message)
if __name__ == '__main__':
run()
3. 项目的配置文件介绍
docker-compose.yml
version: '3.8'
services:
server:
build:
context: .
dockerfile: Dockerfile
ports:
- "50051:50051"
command: python demo1/server.py
client:
build:
context: .
dockerfile: Dockerfile
command: python demo1/client.py
version: '3.8'
:指定 Docker Compose 文件版本。services:
:定义服务。server:
:定义服务器服务。build:
:指定构建上下文和 Dockerfile。ports:
:映射端口。command:
:指定启动命令。
client:
:定义客户端服务。build:
:指定构建上下文和 Dockerfile。command:
:指定启动命令。
python-grpc-demoPython + gRPC demos项目地址:https://gitcode.com/gh_mirrors/py/python-grpc-demo