异步的纯python grpc实现
grpclib的Python项目详细描述
这个项目基于hyper-h2,需要python>;=3.6。
Example
有关所有可用的目录,请参见项目存储库中的examples目录 例子。
Client
importasynciofromgrpclib.clientimportChannel# generated by protocfrom.helloworld_pb2importHelloRequest,HelloReplyfrom.helloworld_grpcimportGreeterStubasyncdefmain():channel=Channel('127.0.0.1',50051)greeter=GreeterStub(channel)reply:HelloReply=awaitgreeter.SayHello(HelloRequest(name='Dr. Strange'))print(reply.message)channel.close()if__name__=='__main__':asyncio.run(main())
Server
importasynciofromgrpclib.utilsimportgraceful_exitfromgrpclib.serverimportServer# generated by protocfrom.helloworld_pb2importHelloRequest,HelloReplyfrom.helloworld_grpcimportGreeterBaseclassGreeter(GreeterBase):asyncdefSayHello(self,stream):request:HelloRequest=awaitstream.recv_message()message=f'Hello, {request.name}!'awaitstream.send_message(HelloReply(message=message))asyncdefmain(*,host='127.0.0.1',port=50051):server=Server([Greeter()])withgraceful_exit([server]):awaitserver.start(host,port)print(f'Serving on {host}:{port}')awaitserver.wait_closed()if__name__=='__main__':asyncio.run(main())
Installation
$ pip3 install grpclib protobuf
错误修复和新功能经常通过候选发行版发布:
$ pip3 install --upgrade --pre grpclib
对于代码生成,您还需要一个protoc编译器,它可以是 与protobuf系统包一起安装:
$ brew install protobuf # example for macOS users
$ protoc --version
libprotoc ...
或您可以使用grpcio-toolspython包中的protoc编译器:
$ pip3 install grpcio-tools $ python3 -m grpc_tools.protoc --version libprotoc ...
注意:grpcio和grpcio-tools包是中不需要的 运行时,grpcio-tools包将仅在代码生成期间使用。
^{tt1}$ plugin
为了使用这个库,您必须使用 提供的插件,可以像这样使用:
$ python3 -m grpc_tools.protoc -I. --python_out=. --python_grpc_out=. helloworld/helloworld.proto
此命令将生成helloworld_pb2.py和helloworld_grpc.py 文件夹。
实现--python_grpc_out选项的插件可用于 protoc编译器为protoc-gen-python_grpc可执行文件,它将 安装期间由pip/setuptools安装到$PATH中 grpclib库。
Contributing
使用Tox来测试和整理更改。