是否可以增加Google Cloud Datastore请求的超时时间?

时间:2014-09-10 11:56:15

标签: java google-cloud-datastore

我们正在开发一个使用Google Cloud Datastore的应用程序,重要的细节:它不是一个gae应用程序! 一切正常使用都可以。我们设计了一个可以获取超过30000条记录的测试,但是当我们尝试运行测试时,我们收到了以下错误:

java.net.SocketTimeoutException: Read timed out

我们发现30秒后发生超时异常,因此这解释了错误。 我有两个问题:

  • 有没有办法增加这个超时?
  • 是否可以使用分页查询数据存储区?我们发现当你有一个aep应用程序时,你可以使用光标,但我们的应用程序不是。

1 个答案:

答案 0 :(得分:2)

您可以使用与使用数据存储区的GAE应用程序完全相同的方式使用游标。看看this page for info

特别是,ResultQueryBatch对象具有.getEndCursor()方法,您可以在使用Query重新发出setStartCursor(...)时使用该方法。以下是上页中的代码段:

Query q = ...
if (response.getBatch().getMoreResults() == QueryResultBatch.MoreResultsType.NOT_FINISHED) {
  ByteString endCursor = response.getBatch().getEndCursor();
  q.setStartCursor(endCursor);
  // reissue the query to get more results...
}

您绝对应该使用游标来确保获得所有结果。 rpc对时间有额外的约束,如总rpc大小,所以你不应该依赖单个rpc来回答你的整个查询。