python - 如何在 gRPC Python 中发送服务器流的初始元数据
问题描述
我有一个提供服务器流式 RPC 的 gRPC 服务器。但是,在调用 RPC 时,我想将一些元数据从客户端发送到服务器。我发现您可以使用with_call
非流式 RPC(请参阅GitHub 上的元数据示例)。
这显然不适用于流式 RPC(你会得到一个AttributeError: '_UnaryStreamMultiCallable' object has no attribute 'with_call'
)。
所以,我的问题是,如何将元数据与服务器流式 RPC 一起从客户端发送到服务器?由于服务器可以检索调用元数据,因此也必须有一种从客户端发送它的方法。
解决方案
好的,所以我发现了如何使用服务器流式 RPC 发送元数据。您唯一需要做的就是添加一个元组作为metadata
关键字参数的参数,如下所示:
stub.MyServerStreamingRPC(
_pb2.MyServerStreamingRequest(),
metadata=(('metadata-identifier', 'metadata-value'),)
# ^
)
如果你像我一样只使用一个元数据对,这里重要的是第一个内部元组后面的逗号。如果您忘记了这一点,则参数的metadata
参数不会被识别为元组,您将得到一个ValueError: too many values to unpack (expected 2)
.
当我第一次尝试简单地传递附加metadata
参数时,我确实忘记了这一点,这让我相信它并不像我想象的那么简单。但是,事实证明,如果您知道如何正确使用 Python :D
推荐阅读
- php - 具有执行数组参数的灵活搜索选项
- c# - 为什么隐藏的重载正在编译?
- google-apps-script - Gmail 插件能否在侧边栏中始终可用?
- android - 在android中的json请求的所有标记之间绘制折线
- sql-server - SQL 的问题 - INSERT INTO
- android - Android NDK 抛出信号 sigsegv:调试模式下的无效地址
- swift - 字节字符串作为 Swift 4 中的数据
- intellij-idea - 如何在 Intellij 中修改默认项目位置
- java - KeyCloak 服务器以 IllegalArgumentException 响应:cookie 值或属性中存在无效的控制字符
- powershell - Search-Mailbox SearchQuery - AND 和 OR 的问题