10

使用 gRPC 和协议缓冲区将文件或图像从一个进程传输到另一个进程的标准方法是什么?该文件从 1MB 到 6MB。

基本上我想知道如何为 python、C++ 和 golang 实现发送者/接收者代码对。

http://github.com/johanbrandhorst/chunker

这是迄今为止我能找到的最接近 golang 的。我在想它是否可以扩展到 python 和 c++。首选具有较少依赖性的更通用的方法。

我正在创建多服务以通过 IPC 消息传递交换图像 btw 机器/进程。另一种选择是使用共享内存。我不确定Redis是否可以存储图像

4

3 回答 3

4

对于小型文件(例如,小于 1 MiB),将整个文件放在一条消息中(as bytes)非常简单。对于较大的文件,将文件分块并使用流是很自然的;请参阅我对类似问题的回答

于 2017-09-07T23:24:49.927 回答
4

我以前没有这样做过,但我认为这归结为协议缓冲区语言支持的类型。

我的理解是您可以使用该bytes类型,因为它可能包含任意字节序列。在存储之前对内容进行编码,分配它并“运送它”!

在这里查看标量类型。

另一种方法是将文件存储在所涉及的“服务”可以读取的位置——如果其中一些需要,也可以写入。然后向“感兴趣的”服务发送一条 gRPC 消息,其中包含访问(或处理)相关文件所需的信息。

于 2017-09-07T21:57:26.560 回答
1

据我所知,使用协议缓冲区发送大于 1MB 的文件可能不是最好的方法。通过套接字通过字节字符串逐块发送文件是一种更好的方法。

如何通过套接字以“块”形式发送文件?

于 2020-01-25T00:41:58.207 回答