我需要传递命令行参数或参数或 execargv,它们应该在为子进程加载环境时出现在进程参数中,该子进程将由公牛启动以处理作业。
可能吗?如果是,有什么办法吗?
我可以使用包含/bull/lib/process的 args[1] 识别为公牛启动的子进程, 但我想将自定义参数传递给节点进程。
我需要传递命令行参数或参数或 execargv,它们应该在为子进程加载环境时出现在进程参数中,该子进程将由公牛启动以处理作业。
可能吗?如果是,有什么办法吗?
我可以使用包含/bull/lib/process的 args[1] 识别为公牛启动的子进程, 但我想将自定义参数传递给节点进程。
当工作脚本运行时,它会读取环境并保留它,直到您将其关闭。
如果您需要工作人员应该使用的函数的可变参数,那么最好将它们发送到您的队列中。
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));});