在Google App Engine上顺序插入的事务冲突。为什么?

时间:2010-10-24 09:07:30

标签: python google-app-engine google-cloud-datastore

我在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次插入

1 个答案:

答案 0 :(得分:2)

碰撞发生在“GroupModel”实体的实例上,其键名为“root”。基于此,我猜你将所有内容都放在一个实体组中,并将其作为父实体。如文档here所述,具有相同父项的每个实体都在同一实体组中,事​​务序列化。因此,对该组中任何实体的任何并发更新都可能与任何其他实体发生冲突。