3

呼び出し元のクライアントにファイル ストリームを返す必要があるサービスがあるため、この proto ファイルを作成しました。

service Sample {
     rpc getSomething(Request) returns (stream Response){}
}

message Request {

}

message Response {
    bytes data = 1;
}

サーバーがこれを受信すると、source.txt ファイルを読み取ってから、バイト ストリームとしてクライアントに書き戻す必要があります。Python GRPCサーバーでこれを行うには、これが適切な方法ですか?

fileName = "source.txt"
with open(file_name, 'r') as content_file:
    content = content_file.read()
    response.data = content.encode()
    yield response

これに関連する例は見つかりません。

4

2 に答える 2

5

おおむね正しいように見えますが、サービス側のコードのすべてを私たちと共有していないため、確信が持てません。私が提案するいくつかの調整は、(1) 最初にファイルをバイナリ コンテンツとして読み取ること、(2)withできるだけ早くステートメントを終了すること、(3) の値を作成した後にのみ応答メッセージを作成することです。そのdataフィールド、および(4)ファイル名からモジュールスコープのモジュールプライベート定数を作成します。何かのようなもの:

with open(_CONTENT_FILE_NAME, 'rb') as content_file:
    content = content_file.read()
yield my_generated_module_pb2.Response(data=content)

. どう思いますか?

于 2018-09-23T02:20:27.717 に答える