0

我需要传递命令行参数或参数或 execargv,它们应该在为子进程加载环境时出现在进程参数中,该子进程将由公牛启动以处理作业。

可能吗?如果是,有什么办法吗?

我可以使用包含/bull/lib/process的 args[1] 识别为公牛启动的子进程, 但我想将自定义参数传递给节点进程。

4

1 回答 1

0

当工作脚本运行时,它会读取环境并保留它,直到您将其关闭。

如果您需要工作人员应该使用的函数的可变参数,那么最好将它们发送到您的队列中。

queue.js

queue.add("foo", {params:"parameters you need", payload:{ foo: "bar" }});

worker.js

const worker = new Worker("foo",
  async (job) => {
    await your_function(job.data.params, job.data.payload);
  }
);

const your_function = async (params, payload) => {
    require("fs").writeFileSync("runner.json", JSON.stringify(payload), "utf8");
  await require("child_process").fork("runner.js", params.split(" "));
};

runner.js

console.log(process.argv);
const fs = require("fs");
fs.readFile("runner.json", "utf8", function (err, data) {console.log("data: ", JSON.parse(data));});
于 2022-01-05T12:01:29.703 回答