我的AppEngine服务器有很多没有在BlobStore中使用的孤立的blobs。我想编写代码来迭代所有的blobs,检查它们是否没有被使用,然后删除。我找不到在BlobStore上迭代的方法。这个是可能的吗?
发布于 2015-04-24 16:58:52
您可以通过数据存储查询列出https://cloud.google.com/appengine/docs/go/blobstore/reference#BlobInfo (尽管这种查询最终是一致的)。
发布于 2015-04-24 19:52:48
下面是在golang中迭代blobs的代码解决方案:
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}
https://stackoverflow.com/questions/29852719
复制相似问题