我有一个循环,我将大量实体放入数据存储区,如下所示:
for line in open(file):
if count >= limit:
break
elif count >= offset:
prop1 = XXX
prop2 = YYY
MyEntity(prop1=XXX, prop2=YYY).put()
count += 1
我知道使用bulk uploader,但我需要在代码中执行此操作。 我目前的工作只要限制不是那么大(否则我的截止日期超出错误,但这不是这个问题的范围),我只是问是否有更好或更有效的方法来做到这一点,如这看起来像是一个丑陋的黑客,例如像将所有实体放在一个镜头而不是循环左右的方法。
答案 0 :(得分:7)
您正在为您存储的每个实体进行数据存储往返。相反,积累它们并进行一次批量放置:
to_write = []
for line in open(file):
#...
to_write.append(MyEntity(prop1=XXX, prop2=YYY)
db.put(to_write)
如果您仍然需要将操作分解为多个部分,请使用任务队列将每个工作块排队作为单独的任务。