安裝grpclib
pip3 install grpclib
protoc編譯.proto檔案,生成原始碼檔案
python -m grpc_tools.protoc -i. --python_out=. --grpclib_python_out=. helloworld.proto
grpclib github官網
helloworld.proto檔案**
syntax = "proto3";
option go_package = ".;proto";
service greeter
message hellorequest
message helloreply
server.py
import asyncio
# from grpclib.utils import graceful_exit
from grpclib.server import server
# generated by protoc
from grpclib_test.helloworld_pb2 import helloreply
from grpclib_test.helloworld_grpc import greeterbase
class greeter(greeterbase):
async def sayhello(self, stream):
request = await stream.recv_message()
message = f'hello, !'
await stream.send_message(helloreply(message=message))
async def main(*, host='127.0.0.1', port=50051):
server = server([greeter()])
# note: graceful_exit isn't supported in windows
# with graceful_exit([server]):
await server.start(host, port)
print(f'serving on :')
await server.wait_closed()
if __name__ == '__main__':
asyncio.run(main())
client.py
import asyncio
from grpclib.client import channel
# generated by protoc
from grpclib_test.helloworld_pb2 import hellorequest, helloreply
from grpclib_test.helloworld_grpc import greeterstub
async def main():
async with channel('127.0.0.1', 50051) as channel:
greeter = greeterstub(channel)
reply = await greeter.sayhello(hellorequest(name="馬亞南"))
print(reply.message)
if __name__ == '__main__':
asyncio.run(main())
總結:客戶端可以使用asyncio發起連線,服務端使用了asyncio可以維護大量的連線。
疑問:這個會影響go和python之間的相互呼叫嗎?
我們用go client請求一下試試:
package main
import (
"context"
"gorpc/grpc_test/proto"
"google.golang.org/grpc"
)func main() )
print(rsp.message)
}
請求一切正常。 Grpc 在Android中的配置
grpc是一種在移動端使用很方便 快捷的資料傳遞方式 以下是grpc在android中的一些只要的配置方式 首先是需要匯入以下的依賴 在build.gradle中新增如下節點 plugin com.google.protobuf protobuf plugins generateprototasks...
Python中的gRPC簡化指南
google的grpc提供了乙個框架,用於實現rpc 遠端過程呼叫 工作流。通過在http 2上分層並使用協議緩衝區,grpc有望比傳統的rest json api帶來很多好處。這篇文章試圖從頭開始,採用python實現乙個簡單的功能,並通過grpc介面提供服務。因此,讓我們開始學習構建。讓我們建立...
Python中的gRPC簡化指南
google的 grpc 提供了用於實現rpc 遠端過程呼叫 工作流的框架。通過在http 2 之上分層 並使用協議緩衝區 grpc有望比傳統的rest json api帶來很多好處。讓我們建立乙個 我們想要公開 遠端呼叫 的函式 過程 square root,位於calculator.py中 im...