多个快速外部POST请求

时间:2019-06-24 06:31:55

标签: node.js

我有一个node.js服务器,它向外部API发出POST请求,每次我必须发出约1万个请求(不用担心我没有滥用API),并且我需要大约2 -3分钟。

我使用request-promise库是为了与Promise.all()一起发出请求,以等待所有请求解决。 我的问题是请求似乎卡住了并​​且不能并行运行,我知道promise会在创建后立即执行,但是resolve事件似乎一次只能侦听10个事件。

我尝试更新maxListeners,并且也使用es6-promise-pool(有500个池),但是没有运气。

我的下一个解决方案可能是将child-processfork一起使用,这种解决方案似乎对我的问题最好吗?

谢谢!

代码:

async function send_msg(msg) {
        return new Promise(function (resolve, reject) {
            request.post(options, function (err, res, body) {
                if (err) {
                    logger.error('error sending msg ' + err);
                    resolve(null);
                } else {
                    resolve(body);
                }
            })
        });
    }
}

async function send_msgs() {
    let msgs = await OutgoingMessage.findAll();
    for (let i = 0; i < msgs.length; i++) {
        promises.push(send_msg(msgs[i]).then(async (result) => {
            if (result != null) {
                try {
                    let sid = result['MessageSid'];
                    let status = result['Status'];
                    msgs[i].update({sid: sid, status: status});
                } catch (e) {
                    logger.error(e + JSON.stringify(result));
                    msgs[i].update({status: 'failed'});
                }
            }
        }));

    }
    return Promise.all(promises);
}

0 个答案:

没有答案