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

Python Protobuf:如何将gRPC响应传入另一个请求的spec字段

解决Python gRPC/Protobuf中UpdateClusterRequest.spec字段赋值问题

问题原因

根据你的Proto定义,UpdateClusterRequest.spec是ClusterTemplate类型,而template_response.revisions[0].template正好是该类型的实例。你之前的尝试都用了不匹配的方法:

  • extend仅适用于**重复字段(repeated)**的添加操作,不适合单个消息字段
  • Python Protobuf不支持直接用=给消息字段赋值,需要用专门的合并方法
  • MergeFromString需要传入序列化后的字节数据,而非消息对象本身

正确解决方案

使用Protobuf消息的MergeFrom()方法,将源消息的内容完整合并到目标字段中:

template_response = get_template_revisions(client_stub, payload_project_id, metadata_okta_token_and_env)
grpc_logger.debug(template_response.revisions[0].template.app)

request = app_pb2.UpdateClusterRequest()
# 将template的内容合并到spec字段
request.spec.MergeFrom(template_response.revisions[0].template)

response = client_stub.get_grpc_app_stub(grpc_stub_method).UpdateCluster(request=request, metadata=metadata_okta_token_and_env)

补充说明

如果template_response.revisions[0].template是完整的ClusterTemplate实例,MergeFrom()会自动将其所有嵌套字段(包括app下的子字段)完整复制到request.spec中,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:01:01