我在 Google App Engine 上插入一组记录。我分批插入它们以避免截止日期异常。
当有大量记录时(例如 1k),我总是收到意想不到的消息:
Transaction collision for entity group with key
datastore_types.Key.from_path(u'GroupModel', u'root', _app=u'streamtomail'). Retrying...
这种情况经常发生。
相反,在本地环境中它可以正常工作。
如果我使用的是顺序流程,而同时没有人在使用该系统,怎么可能会发生事务冲突?
这是我用于批处理的代码:
def deferred_worker():
if next_chunk():
process_chunk()
deferred.defer(deferred_worker)
在 *process_chunk()* 中,我在数据库中执行了 50 次插入操作
最佳答案
冲突发生在键名为“root”的“GroupModel”实体实例上。基于此,我猜您是将所有内容都放在一个实体组中,并将其作为父级。如记录here ,每个具有相同父实体的实体都在同一个实体组中,事务被序列化到该实体组中。因此,对该组中任何实体的任何并发更新都可能与任何其他实体发生冲突。
关于python - Google App Engine 上顺序插入的事务冲突。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4007650/