grpc python
时间: 2024-12-16 12:12:31 浏览: 2
gRPC python 上传超大文件Client与Server完整代码
5星 · 资源好评率100%
gRPC(Google Remote Procedure Call)是一个高性能、开源、通用的RPC框架,它由Google开发,支持多种编程语言,包括Python。gRPC基于HTTP/2协议,并使用Protocol Buffers作为数据交换格式,提供了一种轻量级、高效的远程服务通信机制。
在Python中,你可以使用`grpcio`库来利用gRPC。首先,你需要安装gRPC Python客户端库,可以通过pip命令完成:
```bash
pip install grpcio
```
然后,创建gRPC服务器和服务端 stub(客户端连接描述符)非常直观,比如定义一个简单的服务:
```python
# 定义.proto文件(服务接口)
syntax = "proto3";
service MyService {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 2;
}
# 使用protobuf生成py文件
protoc -I=. my_service.proto --python_out=.
# 实现服务端(server.py)
import my_service_pb2_grpc
from my_service_pb2 import HelloRequest, HelloReply
class MyServiceServicer(my_service_pb2_grpc.MyServiceServicer):
def SayHello(self, request, context):
return HelloReply(message=f"Hello, {request.name}!")
def serve():
server = my_service_pb2_grpc.server()
servicer = MyServiceServicer()
server.add_insecure_port('[::]:50051')
server.add_servicer(servicer)
server.start()
server.wait_for_termination()
if __name__ == '__main__':
serve()
```
在客户端(client.py),你可以这样调用服务:
```python
import my_service_pb2
import my_service_pb2_grpc
channel = grpc.insecure_channel('localhost:50051')
stub = my_service_pb2_grpc.MyServiceStub(channel)
request = HelloRequest(name="world")
response = stub.SayHello(request)
print(response.message)
```
阅读全文