为何RequestQueue的timeoutSecs配置未生效?仍触发30秒默认超时
RequestQueue超时配置不生效的原因及解决办法
为什么你的设置没用?
RequestQueue.timeoutSecs管的是请求在队列里等待被处理的超时时间,不是请求发出去后等待服务器响应的超时。你看到的30秒提示是CheerioCrawler自带的请求响应超时,和队列的这个配置完全没关系。
正确设置请求超时的两种方式
给爬虫全局配置
初始化CheerioCrawler的时候,用requestHandlerTimeoutSecs参数统一设置所有请求的超时:const crawler = new CheerioCrawler({ requestHandlerTimeoutSecs: 60, // 全局改成60秒超时 // 其他爬虫配置... });给单个请求单独配置
如果某些请求需要特殊超时,在添加请求时直接传timeoutSecs参数:await requestQueue.addRequest({ url: '你的目标URL', timeoutSecs: 60, // 这个请求单独用60秒超时 });
要是两种配置都加了,单个请求的设置会优先覆盖全局的。
内容的提问来源于stack exchange,提问作者susdu
相关产品推荐
相关产品推荐

