我想在puppeteer-cluster中创建无限循环

时间:2019-06-17 10:20:24

标签: node.js puppeteer-cluster

我想在puppeteer-cluster中创建无限循环

My Code

但是大约30秒后,它导致了空闲 我该怎么办?

2 个答案:

答案 0 :(得分:0)

伪造者超时的默认时间是30秒,因此您可以尝试使用for (var x = 0; x < layers.length; x++) { var layerindex = layers[x]; doc.activeLayer = doc.artLayers[x]; var ref = new ActionReference(); ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); var desc = executeActionGet(ref); if(desc.hasKey(charIDToTypeID('GrpL'))){ alert("this is Clipping Mask Layer"); } } page.setDefaultNavigationTimeout(0)禁用超时

请参阅:https://github.com/GoogleChrome/puppeteer/issues/1514
和:https://github.com/GoogleChrome/puppeteer/issues/2079

答案 1 :(得分:0)

您的代码中可能会抛出超时错误。您有两种选择:

选项1:听引发的错误

由于您没有列出taskerror事件,因此在此过程中抛出的任何错误都将不会得到处理。

cluster.on('taskerror', (err, data) => {
      // handle error
});

选项2:增加超时值

如果您的任务花费很长时间,则可以增加timeout值:

const cluster = await Cluster.launch({
    // ...
    timeout: 120000 // 2 minutes
});

通常,您不应该在cluster.queue函数内部创建无限循环。队列将为您处理确切的任务。您将作业排队,然后cluster.task函数会处理它们。无需为任务创建无限循环。