GAE ndb 事务写入不考虑重试

GAE ndb transaction write doesn't take retries into account

我正在对 GAE 上的数据存储进行事务性写入,有时 returns 出现以下错误:

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

为了自动重试交易,我在函数中添加了重试参数。所以它看起来如下:

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

但是好像根本就没有重试。如果我手动重新启动任务,它会毫无问题地执行。推荐的处理方式是什么?

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

我知道有一些短期 "rate limits" 如果您经常尝试相同的事情,您可能会中招。可能您遇到了其中一个(会解释为什么稍后手动尝试会成功)。

无论如何,正如 OP 自己指出的那样,推送每个事件的更新并不是非常可扩展的。改为更长的更新周期(每天一次,每周一次,取决于流量)可能是更好的解决方案。