nodejs 使用node-process-pool 实现 模拟请求并发

// Process pool usage example
const ProcessPool = require('node-process-pool')
const taskParams = []
for (let i = 0; i < 10; i++) {
  taskParams[i] = [i]
}
// Create a process pool instance
const processPool = new ProcessPool({
  maxParallelProcess: 50, // Supports maximum number of process parallelism
  timeToClose: 60 * 1000, // The maximum time for a single task to be executed
  dependency: `const puppeteer = require('puppeteer');`, // task script dependencies
  workDir: __dirname, // current directory
  taskName: 'process_pool_genertor', // task script name
  script: async function task(input) {
    const browser = await puppeteer.launch({ headless: false, defaultViewport: { width: 1280, height: 1024 } });
    const page = await browser.newPage();
    console.log("pid是"+process.pid)
    await page.goto("https://www.baidu.com")
    await page.waitForTimeout(30000);
  },
  taskParams // Need to perform the task parameter list, two-dimensional array
})
// Process pools are used to handle large scale tasks
processPool.run()

对某个url进行并发请求


	const ProcessPool = require("node-process-pool");
const taskParams = [];
for (let i = 0; i < 10; i++) {
  taskParams[i] = ["https://www.baidu.com/"];
}

const processPool = new ProcessPool({
  maxParallelProcess: 10, // Supports maximum number of process parallelism
  timeToClose: 60 * 1000, // The maximum time for a single task to be executed
  dependency: `const puppeteer = require("puppeteer-extra");const StealthPlugin = require("puppeteer-extra-plugin-stealth");`, // task script dependencies
  workDir: __dirname, // current directory
  taskName: "process_pool_genertor", // task script name
  script: async function task(url) {
      console.log(url);
    puppeteer.use(StealthPlugin());
    let browser =await puppeteer.launch({
		   headless: false,
      defaultViewport: { width: 1280, height: 1024 },
    });
    const page = await browser.newPage();
    console.log("pid是" + process.pid);
    await page.goto(url[0]);
  },
  taskParams, // Need to perform the task parameter list, two-dimensional array
});
processPool.run();

作者:spike

分类: Nodejs

创作时间:2023-06-25

更新时间:2024-12-09

联系方式放在中括号之中例如[[email protected]],回复评论在开头加上标号例如:#1