我在Google App Engine上插入一组记录。我批量插入它们以避免截止日期异常。
当有大量记录(例如1k)时,我总会收到意外的信息:
实体组的事务冲突 带钥匙
datastore_types.Key.from_path(u'GroupModel”, u'root',_ app = u'streamtomail')。 重试...
这种情况总是发生。
在本地环境中,它可以毫无问题地工作。
如果我正在使用顺序进程并且没有人同时使用该系统,那么如何进行事务冲突呢?
以下是我用于批处理的代码:
def deferred_worker():
if next_chunk():
process_chunk()
deferred.defer(deferred_worker)
where * process_chunk()*我在数据库中执行了50次插入
答案 0 :(得分:2)
碰撞发生在“GroupModel”实体的实例上,其键名为“root”。基于此,我猜你将所有内容都放在一个实体组中,并将其作为父实体。如文档here所述,具有相同父项的每个实体都在同一实体组中,事务序列化。因此,对该组中任何实体的任何并发更新都可能与任何其他实体发生冲突。