AppEngine数据存储区超时错误在达到30秒限制之前抛出

时间:2014-09-13 20:26:25

标签: google-app-engine

使用AppEngine Go,我在读取40k实体的表格时始终看到此错误:

API错误5(datastore_v3:TIMEOUT):数据存储区操作超时,或者数据暂时不可用。

这发生在查询解雇的400毫秒内。

除了对挂钟施加限制外,是否有其他可能导致此错误的内容?

谢谢!

2 个答案:

答案 0 :(得分:6)

原来每个API调用都有5秒超时。如果您需要更多时间,可以像这样包装上下文:

ctx := appengine.Timeout(appengine.NewContext(req), 30*time.Second)

答案 1 :(得分:0)

上述答案已弃用,对于较新版本的Go,请参阅此处的README:

  

appengine.Timeout已被删除。改为使用context.WithTimeout。

https://github.com/golang/appengine#2-update-code-using-deprecated-removed-or-modified-apis

让每个人都更轻松,这是我们正在使用的一个例子:

timeout := 300 * time.Second
c, cFunc := context.WithTimeout(c, timeout)

重要的是在不再需要上下文之后调用cFunc()方法,以避免上下文泄漏。

享受。