【发布时间】:2015-08-06 08:39:05
【问题描述】:
我正在对 GAE 上的数据存储进行事务性写入,有时会返回以下错误:
TransactionFailedError: The transaction could not be committed. Please try again.
为了自动重试事务,我在函数中添加了 retries 参数。所以看起来如下:
@ndb.transactional(retries=4)
def myFunction():
#code
但它似乎根本没有重试。如果我手动重新启动它执行的任务没有问题。推荐的处理方法是什么?
【问题讨论】:
-
嘿文森特!正如您从文档cloud.google.com/appengine/docs/python/config/queue 中看到的那样,重试后会返回“transactionFailedError”。可能只是重试不起作用。也许您受到速率限制,而当您手动重试时它起作用的事实是您需要足够长的时间才能停止速率限制?
-
谢谢帕特里斯。我不确定可能会出现什么速率限制,但这是一种可能的解释。我决定转向每日统计数据,而不是更新每个事件。它解决了这个问题,并且无论如何都会使系统更具可扩展性。
-
感谢您的快速投票和接受 :) 我想确保您的问题的答案没有隐藏在 cmets 中,但还是谢谢您 :) 享受这个平台!如果还有其他问题,请随时在此处发布(我们会监控网站以查找有关平台的好问题并尽我们所能回答它们)。如果您有不适合 Stack 的内容,您可以随时访问我们的问题跟踪器以获取缺陷或功能请求 (code.google.com/p/googleappengine/issues/list) 或访问我们的 Google 群组以获取更多开放式问题 (groups.google.com/forum/#!forum/google-appengine)
-
太好了,我会将这些添加到我的资源中。谢谢!
标签: google-app-engine transactions google-cloud-datastore