ndb独立事务并重试

时间:2012-11-30 12:23:11

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

在以下方案中找到数据存储行为的详细说明时遇到问题。

  1. 交易已启动
  2. 进行了一些更改
  3. 使用ndb.TransactionOptions.INDEPENDENT传播级别启动另一个独立的事务。它的目的是增加分片计数器。我需要它作为嵌套事务,因为我将有许多计数器,并且只能在一个事务中使用5个实体组
  4. 嵌套事务正在成功提交
  5. 主要交易正在尝试提交,但未通过
  6. 主要交易在重试后提交
  7. 我认为嵌套事务只运行一次,但我无法验证这个假设。 有人知道它是如何工作的吗?

1 个答案:

答案 0 :(得分:2)

放入一些日志记录语句以查看行为。如果步骤3-4由主事务的代码启动,则每次重试主事务时都将启动独立事务。这就是为什么它叫做INDEPENDENT,而不是NESTED。