web-dev-qa-db-ja.com

gRPCを使用したファイル転送

GRPCとプロトコルバッファを使用してファイルまたは画像をあるプロセスから別のプロセスに転送する標準的な方法は何ですか?ファイルは1MBから6MBです。

基本的に知りたいのは送信者と受信者のコードペアを実装する方法 python、C++、golangの場合。

http://github.com/johanbrandhorst/chunker

これは私がこれまでに見つけたgolangに最も近いものです。 pythonおよびc ++に拡張可能かどうかを考えています。依存関係の少ない、より一般的なアプローチが推奨されます。

IPCメッセージパッシングを介してマシン/プロセス間でイメージを交換するマルチサービスを作成しています。別のオプションは共有メモリを使用することです。Redisがイメージを保存できるかどうかわかりません

8
cpchung

私は以前にそれをしていませんが、これはプロトコルバッファ言語がサポートするタイプに要約されると思います。

私の理解では、bytes型は任意のバイトシーケンスを含む可能性があるため、使用できます。保存する前にコンテンツをエンコードし、割り当てて「発送」してください。

スカラー型については ここ を見てください。

もう1つのアプローチは、関連する「サービス」が読み取ることができる場所にファイルを保存することです。必要に応じて、一部のサービスに書き込むこともできます。次に、問題のファイルにアクセスする(または他のことを行う)ために必要な情報を含むgRPCメッセージを「関心のある」サービスに送信します。

4
x80486

小規模なファイル(たとえば、1 MiB未満)の場合、ファイル全体を1つのメッセージ(bytesとして)に入れるのは非常に簡単です。大きなファイルの場合、ファイルをパーツにチャンクしてストリームを使用するのは自然なことです。 同様の質問に対する私の答え を参照してください。

2
Eric Anderson

私の知る限り、プロトコルバッファを使用して1MBを超えるサイズのファイルを送信することは最善の方法ではない可能性があります。ソケットを介してバイト文字列を介してチャンクごとにファイルを送信することは、より良いアプローチです。

「チャンク」内のファイルをソケットで送信する方法は?

0
cpchung