如何在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
相关产品推荐
相关产品推荐

