是否可以在GAE中批量加载NDB子实体?

时间:2014-05-21 03:38:43

标签: google-app-engine python-2.7 app-engine-ndb

在将来的某个时候,我可能需要批量加载迁移数据(即从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"""

1 个答案:

答案 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