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

Python中Google Pub/Sub能否从主题获取Schema类,还是需本地proto文件?

问题

我希望在Python中通过Google Pub/Sub发布消息前使用Schema验证数据,已通过gcloud pubsub topics create命令搭配--schema参数将Schema关联至主题。请问在发布或订阅代码中,是否可以像获取编码(topic.schema_settings.encoding)那样从主题中获取Schema类?还是必须复制/提供.proto文件并在对应仓库中生成类,才能完成消息的发布或解析?

参考代码示例:

publisher_client = PublisherClient()
topic_path = publisher_client.topic_path(project_id, topic_id)

# 获取主题的编码类型
topic = publisher_client.get_topic(request={"topic": topic_path})
encoding = topic.schema_settings.encoding

# 实例化由protoc生成的、定义在us-states.proto中的类
state = us_states_pb2.StateProto()
state.name = "Alaska"
state.post_abbr = "AK"
回答
  • 目前无法直接从Pub/Sub主题中获取可直接实例化的Schema类,没法像获取编码格式那样直接拿到可用的Python类对象。
  • 必须通过对应的.proto文件,使用protoc工具生成Python类(比如示例里的us_states_pb2),才能完成消息的序列化、发布以及后续的解析验证。
  • 本质原因是Pub/Sub主题仅存储Schema的元数据和文本定义(比如proto的字符串形式),不会自动为你生成对应编程语言的绑定类。你需要先导出Schema的proto定义,在本地环境生成代码后,才能在发布/订阅逻辑里用这些类构造符合Schema规范的消息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:45:05