2012-08-14 42 views
0

删除包含blob密钥的ndb实体的最佳做法是什么?如何使用谷歌应用程序引擎数据存储中的blobkeys删除实体

我应该把这个包裹在try catch中吗?我可以将for循环变成批处理(虽然ndb是asnyc)?

这是我到目前为止已经试过,但我不知道这是否是最好的方式:

to_delete = BlogPost.query(ancestor=ndb.Key('BlogPost', int(id))).fetch(1)[0] 
for blob_key in to_delete.blob_keys: 
    info = blobstore.BlobInfo(bob_key) 
    info.delete() 
to_delete.key.delete() 
delete_success = "successfully deleted" 

self.response.out.write(delete_success) 

回答

1

我认为你应该在一个任务,而不是在线与实体本身删除斑点。
您可以创建一个事务,将任务排队并一次删除实体。

删除任务中的斑点会给你在发生错误时重试的好处,并且在你有很多斑点时不会延迟删除操作。

+0

好的谢谢 - 我忘了那些一秒钟。这是文档对不对? https://developers.google.com/appengine/docs/python/taskqueue/overview – 2012-08-14 11:40:23

+0

@robertking yes – 2012-08-14 11:50:51

相关问题