Worker lassen Guida Queue-Items parallel verarbeiten. Jeder Worker erhält seinen eigenen Browser-Tab und Queue-Kontext.
// Parallele Worker - Queue-Items gleichzeitig verarbeiten//// Worker laufen parallel, jeder in seinem eigenen Browser-Tab.// Voraussetzung: offener Arbeitsbereich.
const queueName = "sites_to_check";
// Zuerst Arbeit einreihenconst 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(sites.length + " Sites eingereiht");
// Worker-Pool mit 2 parallelen Tabs starteng.workers.start({ clearTabs: true, layout: "vertical", workers: [{ queue: queueName, script: "scripts/check-site.js", concurrency: 2, throttle: { requestsPerMinute: 30 } }]});
g.log("Worker-Pool gestartet. Beobachten Sie den Task-Manager.");g.log("Worker verarbeiten Items unabhängig voneinander.");g.log("Mit g.workers.status() prüfen Sie den Fortschritt.");g.log("Mit g.workers.stop() stoppen Sie den Pool.");
// ---- In scripts/check-site.js könnte stehen: ----//// const ctx = g.worker.getContext();// const tabOpts = { browserTabId: ctx.tabId };//// await g.nav.navigateToUrl(ctx.item.data.url, tabOpts);// const title = await g.page.executeJS("document.title", tabOpts);//// g.store.put("site_checks", ctx.item.data.name, {// title: title,// url: ctx.item.data.url,// checkedAt: new Date().toISOString()// });//// g.queue.commit(ctx.item.id);