Processos de trabalho permitem que o Guida processe itens de fila de forma concorrente. Cada processo recebe sua própria guia do navegador e contexto de item de fila.
// Processos de trabalho paralelos — processar itens de fila concorrentemente//// Processos de trabalho executam itens de fila em paralelo, cada um em sua// própria guia do navegador. Este script configura um grupo// que processa uma fila com várias guias lado a lado.// Requer um espaço de trabalho aberto.
const queueName = "sites_to_check";
// Primeiro, enfileirar alguns itens de trabalhoconst sites = [ { url: "https://example.com", name: "Example" }, { url: "https://httpbin.org", name: "HTTPBin" }, { url: "https://jsonplaceholder.typicode.com", name: "JSONPlaceholder" }];
for (const site of sites) { g.queue.enqueue(queueName, site);}g.log("Enfileirados " + sites.length + " sites");
// Iniciar um grupo de processos de trabalho com 2 guias concorrentes// Cada processo executa 'scripts/check-site.js' por itemg.workers.start({ clearTabs: true, layout: "vertical", workers: [{ queue: queueName, script: "scripts/check-site.js", concurrency: 2, throttle: { requestsPerMinute: 30 } }]});
g.log("Grupo de processos de trabalho iniciado. Observe o painel Task Manager.");g.log("Processos de trabalho processarão itens de forma independente.");g.log("Use g.workers.status() para verificar o progresso.");g.log("Use g.workers.stop() para parar o grupo.");
// ---- Em scripts/check-site.js você escreveria: ----//// // Obter o contexto do processo (guia atribuída + item de fila)// const ctx = g.worker.getContext();// const tabOpts = { browserTabId: ctx.tabId };//// // Navegar na guia própria do processo// await g.nav.navigateToUrl(ctx.item.data.url, tabOpts);//// // Extrair dados da página// const title = await g.page.executeJS("document.title", tabOpts);//// // Salvar resultado no armazenamento// g.store.put("site_checks", ctx.item.data.name, {// title: title,// url: ctx.item.data.url,// checkedAt: new Date().toISOString()// });//// // Confirmar para remover item da fila (obrigatório!)// g.queue.commit(ctx.item.id);