我的用例如下:我从节点服务器到公共API进行了大量的休息API调用.有时响应很大,有时很小.我的用例要求我对响应JSON进行字符串化.我知道一个大的JSON,因为响应将阻止我的事件循环.经过一些研究后,我决定使用child_process.fork来解析这些响应,以便其他API调用不需要等待.我尝试从我的主进程发送一个30 MB的大JSON文件到分叉的child_process.子进程需要很长时间来挑选和解析json.我期待儿童过程的反应并不大.我只想字符串化并获得长度并发送回主进程.
我附上主码和子码.
var moment = require('moment');
var fs = require('fs');
var process = require('child_process');
var request = require('request');
var start_time = moment.utc().valueOf();
request({url: 'http://localhost:9009/bigjson'}, function (err, resp, body) {
if (!err && resp.statusCode == 200) {
console.log('Body Length : ' + body.length);
var ls = process.fork("response_handler.js", 0);
ls.on('message', function (message) {
console.log(moment.utc().valueOf() - start_time);
console.log(message);
});
ls.on('close', function (code) {
console.log('child process exited with code ' + code);
});
ls.on('error', function (err) {
console.log('Error : ' + err);
}); …Run Code Online (Sandbox Code Playgroud)