GAE ndb事务写入不会将重试考虑在内

时间:2015-08-06 08:39:06

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

我正在对GAE上的数据存储区进行事务性写入,有时会返回以下错误:

TransactionFailedError: The transaction could not be committed. Please try again.

为了自动重试事务,我将retries参数添加到函数中。所以它看起来如下:

@ndb.transactional(retries=4)
  def myFunction():
    #code

但它似乎根本没有重试。如果我手动重启它执行的任务没有问题。推荐的处理方式是什么?

1 个答案:

答案 0 :(得分:1)

docs之后,您会在所有交易后收到该错误消息。

我知道有一些短期"速率限制"如果你经常尝试同样的事情,你可以打。你可能已经击中其中一个(这可以解释为什么稍后手动尝试会让它通过)。

无论如何,正如OP所指出的那样,推动每个事件的更新并不具有极高的可扩展性。移至更长的更新周期(每天一次,每周一次,取决于流量)可能是更好的解决方案。