我正在制作类似网络蜘蛛的东西。 它将从WEB LIST中捕获我想要的数据。 WEB LIST的数量约为20。 每个都可以完成大约1到10秒。
我知道DeadlineExceededError
表示我的请求处理程序未在30秒内完成。
我也知道我不能改变30秒的限制。
所以我需要将我的工作分成小块,但我不知道该怎么做。
这是我的代码:
List<String> ids = agent.getWebList();
if(ids.iterator().hasNext()) {
for(String id : ids) {
Data d = agent.getDetailedDataById(id);
agent.updateData(d);
}
}
答案 0 :(得分:3)
答案 1 :(得分:2)
在迭代你的id时,请保留一个计数器。当您捕获DeadLineExceededError时,将计数器作为参数传递给从该位置开始处理的任务。这将按顺序完成。您还可以拆分作业并同时处理多个任务。
答案 2 :(得分:0)
引发了两个DeadlineExceededError
个。您可以在第一时间捕获它,并整理您的状态,以便稍后再次继续或为下一阶段产生任务。
第二次你无法抓住DeadlineExceededError
。