错误:套接字挂起多个获取请求

时间:2018-04-23 16:25:21

标签: node.js sockets request-promise econnreset

我正在Node.js上开发一个脚本,它向API发送大量请求。在多次请求(超过380个请求)之后,我们收到以下错误消息:错误:套接字挂断(代码:ECONNRESET)。这是我们脚本的一个大问题,因为我们希望发送大约10000个请求。 这不是API速率限制的问题,因为我们已经处理了这个问题。

我们的脚本在OVH服务器上运行,我们使用包request-promise发送请求。我们的Node.js版本是v 9.9.0。

以下是抛出错误的函数:

const pollSession = async (sessionUrl) => {
    let session;
    try {
        session = await rp.get({ url: sessionUrl, json: true }, (err, res, body) => {
            if (err) {
                console.log('Err: ', err); 

            } else {
                DEBUG && console.log("Status code: ",res && res.statusCode);
                DEBUG && console.log("Status: ",res && res.body && res.body.Status);
                statusCode = res && res.statusCode;
                status = res && res.body && res.body.Status;
            }
        });
    } catch (e) {
        console.log ("----- pollSession : in catch with return value :"+e);
        return e;
    }
    return session;
}

当请求正常时,我们几次调用此函数以获得完整响应(因为响应很大)。

当抛出错误“Err:{Error:socket hang up”时,我们再次调用该函数并再次返回此错误。我们不能放弃这些请求,所以我们想知道如何解决这个错误。也许有可能增加套接字的最大数量(我看到它可以使用http代理,但我们使用的是请求承诺包)?

如果您需要更多信息,请告诉我

1 个答案:

答案 0 :(得分:0)

经过大量测试后,我发现这与我向Skyscanner发送请求的API有关。我正在搜索的某些航班太长而无法检索并导致此错误。通过捕获错误解决了这个问题。