我在Google云存储中有一个非常大的文件夹,我正在使用下面的django-python代码删除该文件夹,同时使用Google App Engine在30秒内默认http超时
def deleteStorageFolder(bucketName, folder):
from google.cloud import storage
cloudStorageClient = storage.Client()
bucket = cloudStorageClient.bucket(bucketName)
logging.info("Deleting : " + folder)
try:
bucket.delete_blobs(blobs=bucket.list_blobs(prefix=folder))
except Exception as e:
logging.info(str(e.message))
谷歌云希望应用程序一个接一个地请求文件夹中对象的信息,然后一个接一个地删除它们,这真是难以置信
显然,这会由于超时而失败。这里最好的策略是什么
(应该有一种方法,我们可以删除bucket中的父对象,它应该删除背景中某个位置的所有关联子对象,然后我们从模型中删除关联数据。然后Google Storage可以随时删除数据。但是,据我所知,这不是实现的方式)
在客户端库支持批量删除之前,我想有两个简单的选项-请参见https://issuetracker.google.com/issues/142641783:
gsutil -m rm ...
gcsfs
库而不是G库。默认情况下,它支持批量删除-请参见https://gcsfs.readthedocs.io/en/latest/_modules/gcsfs/core.html#GCSFileSystem.rm有一个变通办法。您可以通过两个步骤完成此操作
从您的bucket创建一个transfert,并使用您希望转移到另一个bucket的过滤器(如果需要,创建一个临时过滤器)。选中“传输后从源中删除”复选框
成功传输后,删除临时存储桶。如果时间太长,你还有另一个解决办法
在这两种情况下,你们都依赖谷歌云批处理功能,因为你们自己太长太长了
相关问题 更多 >
编程相关推荐