Ошибка: сокет зависает при нескольких запросах get

Я разрабатываю скрипт на Node.js, который отправляет множество запросов к API. После нескольких запросов (более 380 запросов) мы получаем следующее сообщение об ошибке: Ошибка: сокет зависает (код:ECONNRESET). Это большая проблема для нашего скрипта, так как мы хотели бы отправить около 10000 запросов. Это не проблема с ограничением скорости API, потому что мы уже занимаемся этим.

Наш скрипт работает на сервере OVH, и мы отправляем наши запросы, используя пакет-запрос-обещание. Наша версия 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 ответ

После многих тестов я обнаружил, что это связано с API, к которому я отправляю запросы, Skyscanner для записи. Некоторые рейсы, которые я ищу, слишком длинные, чтобы их можно было найти, что приводит к этой ошибке. Исправил эту проблему, поймав ошибку.

Другие вопросы по тегам