I processi di lavoro permettono a Guida di elaborare elementi di coda in concorrenza. Ogni processo riceve la propria scheda del browser e il proprio contesto elemento di coda.
// Processi di lavoro paralleli: elabora elementi di coda in concorrenza//// I processi di lavoro eseguono elementi di coda in parallelo,// ciascuno nella propria scheda del browser. Questo script imposta// un pool che elabora una coda con più schede affiancate.// Richiede uno spazio di lavoro aperto.
const queueName = "sites_to_check";
// Prima, metti in coda alcuni elementi di lavoroconst 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("Messi in coda " + sites.length + " siti");
// Avvia un pool con 2 schede concorrenti// Ogni processo esegue 'scripts/check-site.js' per elementog.workers.start({ clearTabs: true, layout: "vertical", workers: [{ queue: queueName, script: "scripts/check-site.js", concurrency: 2, throttle: { requestsPerMinute: 30 } }]});
g.log("Pool di processi di lavoro avviato. Guarda il pannello Gestore attività.");g.log("I processi elaboreranno gli elementi in modo indipendente.");g.log("Usa g.workers.status() per controllare l'avanzamento.");g.log("Usa g.workers.stop() per fermare il pool.");
// ---- In scripts/check-site.js scriveresti: ----//// // Ottieni il contesto del processo (scheda assegnata + elemento di coda)// const ctx = g.worker.getContext();// const tabOpts = { browserTabId: ctx.tabId };//// // Naviga nella scheda propria del processo// await g.nav.navigateToUrl(ctx.item.data.url, tabOpts);//// // Estrai dati dalla pagina// const title = await g.page.executeJS("document.title", tabOpts);//// // Salva il risultato nello spazio di archiviazione// g.store.put("site_checks", ctx.item.data.name, {// title: title,// url: ctx.item.data.url,// checkedAt: new Date().toISOString()// });//// // Commit per rimuovere l'elemento dalla coda (obbligatorio)// g.queue.commit(ctx.item.id);