Google Cloud PubSub - 如何向 Cloud Function 发送多个参数
Google Cloud PubSub - How to send multiple arguments to the Cloud Function
我一直在使用 Google Cloud PubSub 来触发 Google Cloud Functions。到目前为止,我一直在使用单个参数 "uuid",现在我还需要发送 development/production 标志。
下面是 Google 应用 Engine/Django 中的发布者:
publisher = pubsub_v1.PublisherClient()
topic_name = 'projects/project/topics/cloudfunction_topic'
message_to_publish = video.uuid
publisher.publish(topic_name, data=message_to_publish.encode('utf-8'), spam='')
下面是 GCF 中的订阅者部分:
if os.getenv('GCF', None):
uuid = base64.b64decode(event['data']).decode('utf-8')
我应该如何更改它以便消息中可以有多个参数(video.uuid、production/development)?
最简单的方法 (IMO) 是创建一个 json 结构,并在发送方将其序列化为 utf-8 字符串,然后将其反序列化为 json 结构GCF.
Pub/Sub 消息是 base64 编码的,因此您可以编写 json 并将其从 Pub/Sub 发送到 Cloud Function,或者您可以从 Pub/Bub 传递属性这既是 json 又是纯文本。
例如,如果您 运行 Pub/Sub 像这样手动操作:
您可以添加属性:
“测试”一词是 base64,但 console.dir(事件)例如这样...
exports.getData = (event, context) => {...
console.dir(event);
...将在 Cloud Logging 中显示:
然后在您的 Cloud Function 中解析和使用 Pub/Sub 属性就相当容易了。显然,这是 Node,但在 Python.
中会类似
我一直在使用 Google Cloud PubSub 来触发 Google Cloud Functions。到目前为止,我一直在使用单个参数 "uuid",现在我还需要发送 development/production 标志。
下面是 Google 应用 Engine/Django 中的发布者:
publisher = pubsub_v1.PublisherClient()
topic_name = 'projects/project/topics/cloudfunction_topic'
message_to_publish = video.uuid
publisher.publish(topic_name, data=message_to_publish.encode('utf-8'), spam='')
下面是 GCF 中的订阅者部分:
if os.getenv('GCF', None):
uuid = base64.b64decode(event['data']).decode('utf-8')
我应该如何更改它以便消息中可以有多个参数(video.uuid、production/development)?
最简单的方法 (IMO) 是创建一个 json 结构,并在发送方将其序列化为 utf-8 字符串,然后将其反序列化为 json 结构GCF.
Pub/Sub 消息是 base64 编码的,因此您可以编写 json 并将其从 Pub/Sub 发送到 Cloud Function,或者您可以从 Pub/Bub 传递属性这既是 json 又是纯文本。
例如,如果您 运行 Pub/Sub 像这样手动操作:
您可以添加属性:
“测试”一词是 base64,但 console.dir(事件)例如这样...
exports.getData = (event, context) => {...
console.dir(event);
...将在 Cloud Logging 中显示:
然后在您的 Cloud Function 中解析和使用 Pub/Sub 属性就相当容易了。显然,这是 Node,但在 Python.
中会类似