Python中带重复字段的gRPC响应流

2024-06-26 00:02:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在设计一个API,该API应该能够处理相对较小的消息,但有许多数据条目。有添加、删除和列出数据库中存储的所有项目的操作

现在我的问题是:我想在短时间内返回所有条目(最多500万条)。我认为响应流是一种方式

在一条消息中返回多个条目时,使用重复字段对消息进行流式传输有意义吗。到目前为止,我还没有看到任何迹象表明这是否更快

例如:

rpc ListDataSet (ListDataSetRequest) returns (stream ListDataSetResponse);


message ListDataSetResponse {
  string transaction_id = 1;
  repeated Entries entries = 2;
}

在服务器中,我将为每条消息添加一定数量的条目,并在循环条目列表以使用生成器的同时生成消息

如有任何建议或提示,将不胜感激


Tags: 数据项目api数据库消息方式流式条目
1条回答
网友
1楼 · 发布于 2024-06-26 00:02:07

是的,流式传输包含重复字段的消息是有意义的

从性能的角度来看,你可能想考虑对你的备选方案进行基准测试,以证明这一点。p>

gRPC缺乏全面的最佳实践,但有人认为消息越小越好,4MiB通常被认为是一个良好的概念上限

另一个要考虑的问题是,您不仅需要考虑服务器的性能,还需要考虑客户机的性能。p>

一种更常见的模式(?)是分页大的结果,并将控制权交给客户机以请求下一个|其他页面。这可能也值得评估

对于异常“巨大”(未指定)的结果,您可能更适合将gRPC消息中的引用返回到带外(例如对象存储)对象

相关问题 更多 >