这是删除数据存储区中数千个实体的方法:首先,获取第一个实体。如果存在第一个实体,则提取500个实体以删除。其次,一次又一次地推迟deletealltarget
直到第一个实体不存在。
def deletealltarget(twaccount_db_key):
target_db = model.Target.query().filter(ndb.GenericProperty('twaccount_key') == twaccount_db_key).get()
if target_db:
target_dbs = model.Target.query().filter(ndb.GenericProperty('twaccount_key') == twaccount_db_key).fetch(500,keys_only=True)
ndb.delete_multi(target_dbs)
deferred.defer(deletealltarget,twaccount_db_key)
还有更好的方法吗?
答案 0 :(得分:0)
您可以异步使用delete_multi_async
,而不是defer
,但是除此之外,您可以通过这种方式很好地完成工作。例如,您正在使用其他已告知的建议,例如使用keys_only
。
Google建议使用this Dataflow template进行批量删除。但是我不知道它是否适合您的情况。