在将来的某个时候,我可能需要批量加载迁移数据(即从CSV)。有没有人提出例外,做以下事情?如果使用ndb.put_multi()函数,行为是否有任何变化?
from google.appengine.ext import ndb
while True:
if not id:
break
id, name = read_csv_row(readline())
x = X(parent=ndb.Key('Y','static_id')
x.id, x.name = id, name
x.put()
class X(ndb.Model):
id = StringProperty()
name = StringProperty()
class Y(ndb.Model):
pass
def read_csv_row(line):
"""returns tuple"""
答案 0 :(得分:0)
从我的研究和感谢评论看来,上面的代码(它在有效代码中生成的代码)会产生问题,最终导致google.appengine.api.datastore_errors.Timeout异常被抛出。
请参阅另一个问题:
Datastore write limit tests - trying to break app engine, but it won´t break ;)
我到目前为止最好的建议是使用任务队列对此进行速率限制。有关的更多信息:
blog.notdot.net/tag/deferred