我的计划是通过随机选择其中一个密钥并在数据存储区中检查对它的引用来删除孤立的blob(并且每十秒左右重复一次)。有没有办法获得该清单?
答案 0 :(得分:3)
您正在寻找的方法是BlobInfoFactory上的queryBlobInfos()方法。它将为您提供所有存储的blob,您可以通过并删除孤儿。不知道为什么这不在BlobstoreService上。 https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/blobstore/BlobInfoFactory#queryBlobInfos()
答案 1 :(得分:1)
如果在数据存储区中有引用,则可以获取file_name并删除孤立项。
blob_key = # you have stored
blob_info = blobstore.BlobInfo.get(blob_key)
blobs = blobstore.BlobInfo.gql("WHERE filename = '%s'" %(blob_info.filename))
for blob in blobs :
if blob.key() != blob_key : # do not delete the referenced one
blob.delete()
当然,您也可以使用gql查询所有blob并将其与您的参考进行比较。