GCS delete object using python client不使用GET uri删除资源

2024-09-28 01:31:45 发布

您现在位置:Python中文网/ 问答频道 /正文

使用GCS python客户端,删除blob不会引发任何异常。但是对刚刚删除的URI执行GET仍然返回资源。以下代码是单个文件应用程序的一部分。你知道吗

from google.cloud import storage as gstorage
storage_client = gstorage.Client()
storage_bucket = storage_client.get_bucket(app.config['STORAGE_BUCKET'])
@bp.route('/verify', methods=['POST'])
def post_verification_photo():
    ...
    crs.execute('SELECT uri FROM photo WHERE id=%s', (photoId,))
    photoUri = crs.fetchone()[0]
    storage_bucket.delete_blob(photoUri[photoUri.rindex('/')+1:])

注意,这个对象是用Cache-Control: public, max-age=9999999头创建的,并且在元数据中是公开的和不可恢复的。你知道吗

执行之后,没有错误,但是获取以bucket URI为前缀的完整URI仍然返回对象。我对这些方法的实际使用感到困惑吗?或者API从他们的网络中删除它需要一些时间吗?或者,别的什么?你知道吗


Tags: 对象代码client客户端getbucketstorageuri
1条回答
网友
1楼 · 发布于 2024-09-28 01:31:45

您不必将storage作为gstorage导入。您可以遵循Python的Deleting Objects文档。它还有一个到GitHub的链接,其中包含管理Blobs的所有函数。你知道吗

我自己编了一点代码。你可以看到example code on GitHub here。使用一个函数列出bucket中的所有blob,并使用另一个函数删除其中一个blob。再次列出blob时,您将看到blob已成功删除。再次尝试删除同一个blob将导致找不到该blob的错误。在您的代码中使用这个示例,当您尝试获取URI时,将无法获取对象。你知道吗

相关问题 更多 >

    热门问题