Мой случай использования выглядит следующим образом: Я делаю много вызовов API с моего сервера node для публичных API. Когда-то ответ большой, а иногда и небольшой. Мой прецедент требует от меня отменить ответ JSON. Я знаю большой JSON, поскольку ответ блокирует мой цикл событий. После некоторых исследований я решил использовать child_process.fork для анализа этих ответов, так что другие вызовы API не должны ждать. Я попытался отправить большой 30-мегабайтный JSON файл из моего основного процесса в раздвоенный child_process. Для детского процесса требуется так много времени, чтобы выбрать и разобрать json. Ответ, ожидаемый от детского процесса, не огромен. Я просто хочу выровнять и получить длину и отправить обратно в основной процесс.
Im прикрепляет главный и дочерний код.
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);
});
ls.on('exit', function (code, signal) {
console.log('Exit : code : ' + code + ' signal : ' + signal);
});
}
ls.send({content: body});
});
response_handler.js
console.log("Process " + process.argv[2] + " at work ");
process.on('message', function (json) {
console.log('Before Parsing');
var x = JSON.stringify(json);
console.log('After Parsing');
process.send({msg: 'Sending message from the child. total size is' + x.length});
});
Есть ли лучший способ добиться того, что я пытаюсь сделать? С одной стороны мне нужна мощность node.js, чтобы сделать 1000 вызовов API в секунду, но иногда я получаю большую заднюю панель JSON, которая затягивает вещи.