使用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从他们的网络中删除它需要一些时间吗?或者,别的什么?你知道吗
您不必将
storage
作为gstorage
导入。您可以遵循Python的Deleting Objects文档。它还有一个到GitHub的链接,其中包含管理Blobs
的所有函数。你知道吗我自己编了一点代码。你可以看到example code on GitHub here。使用一个函数列出bucket中的所有blob,并使用另一个函数删除其中一个blob。再次列出blob时,您将看到blob已成功删除。再次尝试删除同一个blob将导致找不到该blob的错误。在您的代码中使用这个示例,当您尝试获取URI时,将无法获取对象。你知道吗
相关问题 更多 >
编程相关推荐