一次将许多实体放入数据存储区

时间:2012-01-10 22:49:57

标签: python google-app-engine google-cloud-datastore python-2.7

我有一个循环,我将大量实体放入数据存储区,如下所示:

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,但我需要在代码中执行此操作。 我目前的工作只要限制不是那么大(否则我的截止日期超出错误,但这不是这个问题的范围),我只是问是否有更好或更有效的方法来做到这一点,如这看起来像是一个丑陋的黑客,例如像将所有实体放在一个镜头而不是循环左右的方法。

1 个答案:

答案 0 :(得分:7)

您正在为您存储的每个实体进行数据存储往返。相反,积累它们并进行一次批量放置:

to_write = []
for line in open(file):
  #...
  to_write.append(MyEntity(prop1=XXX, prop2=YYY)
db.put(to_write)

如果您仍然需要将操作分解为多个部分,请使用任务队列将每个工作块排队作为单独的任务。