2 回答
TA贡献1886条经验 获得超2个赞
这些错误来自两个不同的地方,第一,调用错误,是RPC客户端超时导致的本地错误。它表示等待 RPC 完成的超时。google.golang.org/appengine 中的默认 RPC 超时为 60 秒。
第二个错误来自服务端。此错误表示在数据存储中执行操作时发生超时。其中一些操作的超时时间远短于 60 秒,通常这可能表示存在争用。
理解这些差异的一种可能更简单的方法是,您会发现,如果您对大量更改进行单个多操作,则可以轻松触发第一次超时。如果您针对单个键或一小组键创建大量并发操作,您将更容易触发后者。由于超时是共享资源饱和度的一般指标,当然有很多方法和组合来生成它们。一般来说,人们会希望适当地重试操作,并适当地调整操作的大小,以及尽可能地聚合热键上的操作,以减少与争用相关问题的机会。正如其他人所建议的那样,python 和 java 文档已经有一些这样的例子。
您可能希望使用https://godoc.org/google.golang.org/appengine#IsTimeoutError并且如果您需要增加第一个错误类的超时时间,您可以调整上下文截止日期,请参阅此处的方法:https : //godoc.org/golang.org/x/net/context#WithDeadline注意:您将无法将截止日期延长到请求截止日期之后,但是,如果您在任务或虚拟机中运行您可以延长期限。
TA贡献1735条经验 获得超5个赞
您看到的第一个错误可能只是正常操作中的超时,第二个可能是由于写入争用。更多相关信息:处理数据存储错误https://cloud.google.com/appengine/articles/handling_datastore_errors
- 2 回答
- 0 关注
- 151 浏览
添加回答
举报