【问题标题】:How to send initial metadata for a server stream in gRPC Python如何在 gRPC Python 中发送服务器流的初始元数据
【发布时间】:2021-03-21 22:37:28
【问题描述】:

我有一个提供服务器流式 RPC 的 gRPC 服务器。但是,在调用 RPC 时,我想将一些元数据从客户端发送到服务器。我发现您可以将 with_call 与非流式 RPC 一起使用(请参阅 the metadata example on GitHub)。
这显然不适用于流式 RPC(你会得到一个AttributeError: '_UnaryStreamMultiCallable' object has no attribute 'with_call')。

所以,我的问题是,如何将元数据与服务器流式 RPC 一起从客户端发送到服务器?由于服务器可以检索调用元数据,因此也必须有一种方法可以从客户端发送它。

【问题讨论】:

    标签: python grpc


    【解决方案1】:

    好的,所以我发现了如何使用服务器流式 RPC 发送元数据。您唯一需要做的就是添加一个元组作为 metadata 关键字参数的参数,如下所示:

    stub.MyServerStreamingRPC(
        _pb2.MyServerStreamingRequest(),
        metadata=(('metadata-identifier', 'metadata-value'),)
    #                                                      ^
    )
    

    如果您像我一样只使用一对元数据,那么重要的是第一个内部元组后面的逗号。如果您忘记了这一点,metadata 参数的参数将不会被识别为元组,您将获得 ValueError: too many values to unpack (expected 2)
    当我第一次尝试简单地传递额外的metadata 参数时,我确实忘记了这一点,这让我相信它并不像我想象的那么简单。但是,事实证明,如果你知道如何正确使用 Python :D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多