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

Moh*_*mis 0 python google-app-engine python-2.7 google-cloud-datastore

我有一个循环,我把很多实体放入数据存储区,如下所示:

for line in open(file):
    if count >= limit:
        break
    elif count >= offset:
        prop1 = XXX
        prop2 = YYY
        MyEntity(prop1=XXX, prop2=YYY).put()
    count += 1
Run Code Online (Sandbox Code Playgroud)

我知道使用批量上传器,但是我需要在代码中执行此操作.只要限制不是那么大,我目前有什么工作(否则我的截止日期超出错误,但这不是这个的范围问题),我只是问是否有更好或更有效的方法来做这件事,因为这看起来像一个丑陋的黑客,例如一种方法,如将所有实体放在一个镜头而不是循环左右.

Nic*_*son 7

您正在为您存储的每个实体进行数据存储往返.相反,累积它们并执行单个批处理:

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

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