簡體   English   中英

幾次嘗試后,Node.js請求拋出ECONNREFUSED

[英]Node.js REQUEST throwing ECONNREFUSED after a few attempts

我正在使用以下代碼:

async function validateMOData(data, callback) {
    success('Validation started');
    let a = 0;
    let i = data.length;
    console.log('length of array', i);
    while (i--) {
        a = a + 1;
        console.log('Loop Count', a);
        console.log(data[i]);
        let result;
        try {
            result = await checkValidity(data[i]);
            if ((JSON.parse(result.body)).isValid === false) {
                createErrorLog(data[i].MemberId, data[i].MemberAgreementId, (JSON.parse(result.body)).responseMessage, (JSON.parse(result.body)).responseCode, 'x', data[i].CsvFileName)
                deleteFaultyData(data[i].Id);
                data.splice(i, 1);
            }
        } catch (err) {
            console.log(err);
        }
    }
    success('validation ended');
    callback(data);
}
function checkValidity(record) {
    return new Promise((resolve, reject) => {
        let validityCheckUrl = `${constants.USER_INTERFACE.SERVER_URL_PREFIX}validateMemberData/?memberId=${record.MemberId}&memberAgreementId=${record.MemberAgreementId}`;
        request({ url: validityCheckUrl, pool: { maxSockets: 10 } }, (error, response, body) => {
            if (error) {
                reject(error);
            } else {
                resolve(response, body);
            }
        });
    });

}

在while循環中進行幾次迭代后, checkValidity方法開始引發以下錯誤:

{ Error: connect ECONNREFUSED IP:port
at Object._errnoException (util.js:1022:11)
at _exceptionWithHostPort (util.js:1044:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1198:14)
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: 'IP',
port: port }

此錯誤不是在第一個請求中出現的,而是在幾個請求之后。 有人可以幫忙嗎? 我有什么想念的嗎?

注意 :此代碼在AWS lambda上運行,並且checkValidity連接到EC2上部署的Node.js服務器

我的想法是您沒有放置支票以檢查是否為負或簡單地說這里沒有中斷條件嘗試

try {
      ***********************
        result = await checkValidity(data[i]);
        if ((JSON.parse(result.body)).isValid === false) {
            createErrorLog(data[i].MemberId, data[i].MemberAgreementId, (JSON.parse(result.body)).responseMessage, (JSON.parse(result.body)).responseCode, 'x', data[i].CsvFileName)
            deleteFaultyData(data[i].Id);
            data.splice(i, 1);
        }
    } catch (err) {
        console.log(err);
    }

因此,循環將嘗試在checkvalidity內部發送數據,該數據甚至不存在,因此很可能是發送錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM