python中grpc配置asyncio使用

2022-09-19 00:06:12 字數 2110 閱讀 6523

安裝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...