我的AppEngine服务器有很多未在BlobStore中使用的孤立blob。我想编写代码来迭代所有blob并检查它们是否未被使用然后删除。我找不到迭代BlobStore的方法。这可能吗?
答案 0 :(得分:1)
您可以通过数据存储区查询列出https://cloud.google.com/appengine/docs/go/blobstore/reference#BlobInfo(尽管此类查询最终是一致的)。
答案 1 :(得分:0)
这是一个在golang中迭代blob的代码解决方案:
c.Infof("Iterating over blobs")
q := datastore.NewQuery("__BlobInfo__")
// Iterate over the results.
total := 0
t := q.Run(c)
for {
var bi blobstore.BlobInfo
_, err := t.Next(&bi)
if err == datastore.Done {
break
}
if err != nil && isErrFieldMismatch(err) == false {
c.Errorf("Error fetching next Blob: %v", err)
break
}
// Do something with the Blob bi
c.Infof("Got blob [%v] of size [%v]", bi.ContentType, bi.Size)
total++
if total > 100 { break }
}
c.Infof("Iterating Done")
您还需要使用此功能来忽略字段不匹配错误:
func isErrFieldMismatch(err error) bool {
_, ok := err.(*datastore.ErrFieldMismatch)
return ok
}