我正在对GAE上的数据存储区进行事务性写入,有时会返回以下错误:
TransactionFailedError: The transaction could not be committed. Please try again.
为了自动重试事务,我将retries参数添加到函数中。所以它看起来如下:
@ndb.transactional(retries=4)
def myFunction():
#code
但它似乎根本没有重试。如果我手动重启它执行的任务没有问题。推荐的处理方式是什么?
答案 0 :(得分:1)
在docs之后,您会在所有交易后收到该错误消息。
我知道有一些短期"速率限制"如果你经常尝试同样的事情,你可以打。你可能已经击中其中一个(这可以解释为什么稍后手动尝试会让它通过)。
无论如何,正如OP所指出的那样,推动每个事件的更新并不具有极高的可扩展性。移至更长的更新周期(每天一次,每周一次,取决于流量)可能是更好的解决方案。