【发布时间】:2021-10-10 07:30:37
【问题描述】:
现在我有一个要求。每当我上传并创建一个新的存储对象时,我都需要修改所有存储对象的元数据。为此,我使用 GCP 的 Function 来实现。
让存储成为函数的触发器。每次上传新的存储对象时,都会使用该函数修改所有对象的元数据。代码如下:
from google.cloud import storage
def hello_gcs(bucket_name, blob_name):
"""Set storage all blob's metadata."""
bucket_name = 'gcpresource'
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blobs = storage_client.list_blobs(bucket_name)
for blob in blobs:
blob = bucket.get_blob(blob.name)
CACHE_CONTROL="public, max-age=60480000"
blob.cache_control = CACHE_CONTROL
blob.patch()
print("The metadata for the blob {} is {}".format(blob.name, blob.cache_control))
但是当我将代码放到实际应用程序中时,每次执行它都会显示“函数执行耗时340005毫秒,以状态完成:'超时'”。为此,我设置了最大超时时间为540s,内存为256MB,执行结果还是超时。
作为一个新手,这个问题困扰了我很久,所以想问问是我的代码有问题还是我的存储对象太多导致的?有什么方法可以让函数执行得更快一些?
谢谢!!!!
【问题讨论】:
-
您的存储桶中有多少 blob?
-
大约有几万个文件
标签: python-3.x google-cloud-functions google-cloud-storage