GRPCとプロトコルバッファを使用してファイルまたは画像をあるプロセスから別のプロセスに転送する標準的な方法は何ですか?ファイルは1MBから6MBです。
基本的に知りたいのは送信者と受信者のコードペアを実装する方法 python、C++、golangの場合。
http://github.com/johanbrandhorst/chunker
これは私がこれまでに見つけたgolangに最も近いものです。 pythonおよびc ++に拡張可能かどうかを考えています。依存関係の少ない、より一般的なアプローチが推奨されます。
IPCメッセージパッシングを介してマシン/プロセス間でイメージを交換するマルチサービスを作成しています。別のオプションは共有メモリを使用することです。Redisがイメージを保存できるかどうかわかりません
私は以前にそれをしていませんが、これはプロトコルバッファ言語がサポートするタイプに要約されると思います。
私の理解では、bytes
型は任意のバイトシーケンスを含む可能性があるため、使用できます。保存する前にコンテンツをエンコードし、割り当てて「発送」してください。
スカラー型については ここ を見てください。
もう1つのアプローチは、関連する「サービス」が読み取ることができる場所にファイルを保存することです。必要に応じて、一部のサービスに書き込むこともできます。次に、問題のファイルにアクセスする(または他のことを行う)ために必要な情報を含むgRPCメッセージを「関心のある」サービスに送信します。
小規模なファイル(たとえば、1 MiB未満)の場合、ファイル全体を1つのメッセージ(bytes
として)に入れるのは非常に簡単です。大きなファイルの場合、ファイルをパーツにチャンクしてストリームを使用するのは自然なことです。 同様の質問に対する私の答え を参照してください。
私の知る限り、プロトコルバッファを使用して1MBを超えるサイズのファイルを送信することは最善の方法ではない可能性があります。ソケットを介してバイト文字列を介してチャンクごとにファイルを送信することは、より良いアプローチです。