我想在 puppeteer-cluster 中创建无限循环
但是大约 30 秒后,它导致空闲,我该怎么办?
您的代码中可能会引发超时错误。你有两个选择:
选项 1:监听抛出的错误
由于您没有列出taskerror
事件,因此不会处理在此过程中引发的任何错误。
cluster.on('taskerror', (err, data) => {
// handle error
});
选项 2:增加超时值
如果您的任务需要很长时间,您可以增加该timeout
值:
const cluster = await Cluster.launch({
// ...
timeout: 120000 // 2 minutes
});
通常,您不应在cluster.queue
函数内部创建无限循环。队列为您处理确切的任务。您将工作排队,然后该cluster.task
功能会处理它们。无需为任务创建无限循环。
30 秒是 puppeteer 中超时的默认时间,因此您可以尝试使用page.setDefaultNavigationTimeout(0)
和禁用超时page.setDefaultTimeout(0)
请参阅:https
://github.com/GoogleChrome/puppeteer/issues/1514
和:https ://github.com/GoogleChrome/puppeteer/issues/2079