我通过提供的导航过滤器插件使用带有 selenium 远程驱动程序协议的 Stormcrawler。如果我的导航过滤器执行了很长时间(url 被正确处理并在 mysql 数据库中将状态更新为“fetched”),爬虫会以某种方式从 mysql 表中获取相同的 url 以再次获取。所以状态更新发生在 url 再次在队列中之后。我可以配置什么参数来避免这种情况?我试图将所有组件设置为 threads=1 并且它仍在发生。
问问题
54 次
1 回答
0
这可能是由于 Storm 中的超时设置造成的。请参阅原型中的 conf,它设置为 300 秒。在发出元组后经过这段时间后,元组将失败,并且其 URL 从正在处理的 spout 的 URL 缓存中删除。因此,当 spout 再次查询 MySQL 时,URL 将沿着拓扑向下发送。但是,元组失败并不会停止 URL 的处理,并且状态最终会像您注意到的那样得到更新。
一种选择是将超时值设置为足够大,以便您在导航过滤器中执行的任何操作都有时间完成或更改您的逻辑,以便花费更少的时间。
于 2018-08-31T12:53:31.493 回答