爬行后如何减少/更改延迟



是否有人会经历使用crawler4j?

我遵循项目页面中的示例,以实现自己的爬行者。爬行者工作正常,爬行非常快。唯一的事情是我总是延迟20-30秒。有没有办法避免等待时间?

刚刚检查了crawler4j源代码。crawercontroller.start方法有很多固定的10秒"暂停",以确保完成线程并准备好清理。

// Make sure again that none of the threads
// are
// alive.
logger.info("It looks like no thread is working, waiting for 10 seconds to make sure...");
sleep(10);
// ... more code ...
logger.info("No thread is working and no more URLs are in queue waiting for another 10 seconds to make sure...");
sleep(10);
// ... more code ...
logger.info("Waiting for 10 seconds before final clean up...");
sleep(10);

另外,主循环每10秒检查一次,以了解是否完成了爬行线:

while (true) {
    sleep(10);
    // code to check if some thread is still working
}
protected void sleep(int seconds) {
   try {
       Thread.sleep(seconds * 1000);
   } catch (Exception ignored) {
   }
}

因此,可以微调这些电话并减少睡眠时间。

更好的解决方案,如果您可以节省一些时间,那就是重写此方法。我将用执行人员服务替换List<Thread> threads,其等待方法将特别方便。与睡眠不同,如果完成所有任务,awaitTermination(10, TimeUnit.SECONDS)将立即返回。

相关内容

  • 没有找到相关文章

最新更新