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

如何在Python中将属性作为变量向GCP Pub/Sub主题发布消息

将Pub/Sub Python示例中的自定义属性设为变量

你只需要先定义origin和username变量,然后在调用publish方法时直接引用这些变量即可,和硬编码字符串的用法完全兼容。

基础修改版(固定属性值)

from google.cloud import pubsub_v1

# TODO(developer)
project_id = "your-project-id"
topic_id = "your-topic-id"

# 定义自定义属性变量
origin = "python-sample"
username = "gcp"

publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project_id, topic_id)

for n in range(1, 10):
    data_str = f"Message number {n}"
    # 消息内容必须是字节串
    data = data_str.encode("utf-8")
    # 使用变量作为自定义属性传入
    future = publisher.publish(
        topic_path, data, origin=origin, username=username
    )
    print(future.result())

print(f"已向 {topic_path} 发布带自定义属性的消息。")

动态属性版(循环内变更属性值)

如果需要每次生成消息时使用不同的属性值,可将变量定义放到循环内部:

from google.cloud import pubsub_v1

# TODO(developer)
project_id = "your-project-id"
topic_id = "your-topic-id"

publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project_id, topic_id)

for n in range(1, 10):
    data_str = f"Message number {n}"
    data = data_str.encode("utf-8")
    # 每次循环生成不同的自定义属性值
    origin = f"python-sample-{n}"
    username = f"user-{n}"
    future = publisher.publish(
        topic_path, data, origin=origin, username=username
    )
    print(future.result())

print(f"已向 {topic_path} 发布带自定义属性的消息。")

核心逻辑:publish方法的自定义属性以关键字参数形式传入,只要参数名(origin、username)保持一致,参数值可以是任意字符串类型的变量,和直接传入字符串字面量的效果完全相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:19:51