2012-08-14 52 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

相關問題