今天早上,我的 GAE 应用程序生成了几个错误日志:“这些数据存储实体的争用过多。请重试。”。在我看来,这种类型的错误只有在多个请求尝试修改同一个实体或同一个实体组中的实体时才会发生。
当我收到此错误时,我的代码正在插入新实体。我很困惑。这是否意味着我们创建新实体的速度存在限制?
我的模型定义和调用顺序代码如下所示:
# model defnition
class ExternalAPIStats(ndb.Model):
uid = ndb.StringProperty()
api = ndb.StringProperty()
start_at = ndb.DateTimeProperty(auto_now_add=True)
end_at = ndb.DateTimeProperty()
# calling sequence
stats = ExternalAPIStats(userid=current_uid, api="eapi:hr:get_by_id", start_at=start_at, end_at=end_at)
stats.put() # **too much contention** happen here
这对我来说很神秘。我想知道我将如何处理这个问题。如果有任何建议,请告诉我。