我尝试通过带有 Kue 的作业队列生成一个执行 cpu 密集型计算的子进程。我目前的代码如下所示:
消费者.js
var kue = require('kue');
var util = require('util');
var spawn = require('child_process').spawn;
var jobs = kue.createQueue();
jobs.process('calc', 2, function(job, done){
var work = spawn('Rscript', ['opti2.R', job.data.file]);
work.stderr.on('data', function (data) {
job.log('stderr: ' + data);
});
work.stdout.on('data', function (data) {
job.log('stdout: ' + data);
});
work.on('exit', function (code, signal) {
console.log('child process exited with code ' + code + ' with singal ' + signal);
if(code != 0){
done(****How to get the stderr of the child process as an error here***);
} else {
done(Error());
}
});
});
代码在某种程度上做了我想做的事情,但是有没有更好的方法来报告工作失败(给 Kue)并从生成的进程中获取标准错误?