【发布时间】:2020-06-24 18:44:43
【问题描述】:
我有一堆存储桶,它们会在文件上传时向 Pub/Sub 主题发布通知。然后我有一个订阅 Pub/Sub 主题的云函数,它将这些文件复制到它们的最终目标存储桶中。这对大多数文件都适用,但是当我有大文件(> 1GB)时,它们无法复制。源桶是多区域的,目标桶是区域和近线的。
我的代码本质上是:
client = storage.Client()
src_bucket = client.get_bucket(src_bucket_name)
src_blob = src_bucket.get_blob(src_filename)
dst_bucket = client.get_bucket(dst_bucket_name)
dst_blob = dst_bucket.blob(dst_filename)
dst_blob.rewrite(src_blob)
最初,云函数在 60 秒时超时,所以我认为这是问题所在,但后来我将云函数超时时间增加到 540 秒,但该函数仍然超时。我的功能重试了 20 分钟,所以我可以看到问题是可重复的。 在将云函数超时设置失败后,我阅读了 blob 文档,发现 blob.rewrite 也有 60 秒的默认超时,因此我也将其设置为 540 秒,但这仍然超时。
在这一点上,我不确定我错过了什么。这是超时问题吗?或者这是否与 Pub/Sub 发布多条消息有关,所以我可以有多个云功能尝试同时制作同一个副本?或者有没有更好的方法在存储桶之间自动移动大文件?
【问题讨论】:
标签: python google-cloud-platform google-cloud-functions google-cloud-storage