我在Google App Engine上插入一组记录.我批量插入它们以避免截止日期异常.
当有大量记录(例如1k)时,我总会收到意外:
Transaction collision for entity group
with keydatastore_types.Key.from_path(u’GroupModel’,
u’root’, _app=u’streamtomail’).
Retrying…
这种情况总是发生.
在本地环境中,它没有任何问题.
如果我使用顺序进程并且没有人同时使用系统,那么如何发生事务冲突呢?
这是我用于批处理的代码:
def deferred_worker():
if next_chunk():
process_chunk()
deferred.defer(deferred_worker)
where in * process_chunk()*我在数据库中执行了50次插入
最佳答案 碰撞位于“GroupModel”实体的实例上,其键名为“root”.基于此,我猜你将所有内容都放在一个实体组中,并将其作为父实体.如文档
here所示,具有相同父项的每个实体都在同一实体组中,事务被序列化.因此,对该组中任何实体的任何并发更新都可能与任何其他实体发生冲突.