我有一个node.js应用程序,它通过Web请求接收文件,然后将转换过程应用于此文件。由于任务长时间运行,因此需要与主线程分开运行。
目前我刚通过setTimeout()
电话拨打了必要的代码。为了将主应用程序与转换过程隔离开来,我想把它移到子进程中,因为它长时间运行,我想将主代码与正在完成的工作隔离开来(我担心的太多了吗?)。我正在打电话的那一刻:
const execFile = require('child_process').execFile;
const child = execFile('node', './myModule.js', (error, stdout, stderr) => {
if (error) {
throw error;
}
console.log(stdout);
});
这是node.js中的正确方法,还是简单地使用指定的模块和参数启动子进程,但不必将'node'指定为可执行文件?
答案 0 :(得分:2)
刚看到node.js提供了' fork'函数,用于执行模块,虽然它们需要被编写,就像它们期望命令行参数一样,处理process.argv数组。
命令调用是:
child_process.fork(modulePath[, args][, options])
更多详情here。
在我的特定情况下,分叉可能没有意义,因为我正在使用的node.js库已经有了一个fork。