Google app engine Google应用程序引擎填充数据存储条目

Google app engine Google应用程序引擎填充数据存储条目,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,我想用一些值填充我的数据存储。最好的方法是什么? 这是我的密码- for n in range(seqlen): for m in range(n+1): for l in range(m+1): temp = [-BIGINT for k in range(m-l+1)] obj = DbEntity4D(key_name=str(n)+','+str(m) +','+ str(l)) obj.value = temp obj.put

我想用一些值填充我的数据存储。最好的方法是什么? 这是我的密码-

for n in range(seqlen):
  for m in range(n+1):
    for l in range(m+1):
      temp = [-BIGINT for k in range(m-l+1)]
      obj = DbEntity4D(key_name=str(n)+','+str(m) +','+ str(l))
      obj.value = temp
      obj.put()
还是这个更好

for n in range(seqlen):
  for m in range(n+1):
    for l in range(m+1):
      temp = [-BIGINT for k in range(m-l+1)]
      obj[i] = DbEntity4D(key_name=str(n)+','+str(m) +','+ str(l))
      obj[i].value = temp
      i = i+1

    db.put(obj)
或者还有其他更好的方法吗


seqlen可以是1到1000。它可能无法在10分钟内完成整个过程,但我可以在下一个任务中从我之前离开的地方继续进行。

批处理数据存储放置将通过消除到数据存储的往返而节省大量时间


看起来您正试图用后一个代码块(一次保存
m
个实体)来实现这一点。在
seqlen
为1000的情况下,一次最多可写入1000个实体。但是,一次写入的实体数量会有所不同,因为最内层的for循环所生成的实体数量会有所不同。如果您等待保存到数据库,直到收集了
n
(大量)的
DbEntity4D
实体,然后保存它们(而不是总是在最内部循环之后立即保存它们),则速度可能会更快。当然,这可能会使逻辑复杂化,使下一个任务可以在上一个任务停止的地方继续添加和创建这些实体。

同意。我还建议使用remote_api,而不是在单个请求或任务中尝试这样做,因为在app engine外部运行的remote_api脚本可以运行任意长的时间。