You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python gRPC服务端读取元数据?附客户端服务端示例代码

在gRPC服务端读取客户端传递的Metadata

嘿,要读取客户端发过来的metadata其实超简单,你只需要用到服务端方法里的context参数就行——它提供了专门获取元数据的方法。我直接给你修改好的服务端代码,再拆解下逻辑:

class Greeter(helloworld_pb2_grpc.GreeterServicer):
    def SayHello(self, request, context):
        # 第一步:通过context获取所有客户端传递的metadata
        # 返回的是一个元组列表,每个元组是 (key, value) 的形式
        metadata = context.invocation_metadata()
        
        # 把metadata转换成字典,方便快速通过key取值(如果有重复key会保留最后一个)
        metadata_dict = dict(metadata)
        
        # 获取你要的'key'对应的value,找不到的话用默认值兜底
        custom_value = metadata_dict.get('key', 'no value provided')
        
        # 如果你需要处理重复key的情况,可以直接遍历metadata列表
        # for key, value in metadata:
        #     if key == 'key':
        #         custom_value = value
        #         # 要是有多个相同key,这里可以自己处理逻辑,比如收集所有值
        #         break
        
        # 这里可以根据拿到的metadata做你需要的业务逻辑
        print(f"客户端传来的metadata 'key' 值是:{custom_value}")
        
        # 也可以把metadata内容返回给客户端看看效果
        return helloworld_pb2.HelloReply(message=f'Hello, {request.name}! 我们收到你的metadata:{custom_value}')

关键点说明:

  • context.invocation_metadata():这个方法会返回客户端发送的所有元数据,包括你自定义的('key', 'value'),还有gRPC自带的一些系统元数据。
  • 转字典的方式适合大多数场景,但如果客户端可能发送多个相同key的元数据,遍历列表的方式会更灵活,能收集到所有对应的值。
  • 你可以把获取到的metadata用于身份验证、日志记录或者任何你需要的业务逻辑里。

内容的提问来源于stack exchange,提问作者Tien Hoang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:50:20