Cloud Task 需要 'Bytes' 类型的负载,我该如何发送字典?

Cloud Task expects payload of type 'Bytes', how do I send a dictionary?

我正在尝试学习如何对由云函数处理的任务进行排队。按照提供的示例代码 https://cloud.google.com/tasks/docs/creating-http-target-tasks

我也在使用 Python 的示例云函数代码。云函数需要一些参数或 JSON,如下所示:

{"message": "hello Ari"}

但是,当我尝试将任务的有效负载设置为字典时,它说它无法对字典进行编码,那么我该如何发送字符串以外的内容。我本质上是想发送键和值供云函数解释:

{
"file": "image.png",
"user": "ari",
"process": "resize",
}

所以我想我的问题是,如何发送带有上下文的信息以及如何在云函数端解释有效负载

基本上用户上传一张图片,图片存储在 GCS 中,创建一个任务来调整图片大小(或做一些事情),云功能由任务队列触发,它读取存储桶信息和谁用户正在执行作业,更新 firestore 中的文件元数据以向用户指示作业已完成。

原来如此简单。在创建任务的 route/function 中(参见上面的 link 代码示例),将 payload 变量更改为如下所示。

payload = json.dumps({
    "message": "hello",
    "user": "ari"
})

然后在您的云函数或端点中使用它来将其传回字典中:

payload = request.get_data(as_text=True)
args = json.loads(payload)

message = args.get("message")