Ошибка: функция вышла за пределы области запроса Вызов функции был прерван

Я пишу облачную функцию, которая считывает несколько строк из файла .csv и отправляет по одному HTTP-запросу для каждой строки, но я получаю указанную выше ошибку.

Об этой ошибке уже спрашивали (здесь, здесь и здесь, чтобы перечислить несколько), но во всех этих случаях проблема заключалась в том, что функция не возвращала обещание, которое разрешалось бы только после каждой асинхронной операции.

Насколько я понимаю, как работает async, в моем коде этой проблемы нет. Вот его суть, убрав некоторые конкретные детали:

const request = require('request-promise-native');
const storage = require('@google-cloud/storage')();

exports.sendData = async (data, context) => {
    const [file] = await storage.bucket(data.bucket).file(data.name).download();
    const [header, ...table] = file.toString('utf8').split('\n').map(row => row.split(','));
    const rows = table.map(
        row => header.reduce((obj, col, i) => {
            obj[col] = row[i];
            return obj;
        }, {})
    );

    const paramList = rows.map(({ csv_field1, csv_field2 }) => ({
        req_field1: csv_field1,
        req_field2: csv_field2,
        // etc.
    }));

    let errors = 0;
    console.info(`Sending ${paramList.length} rows...`);
    await Promise.all(paramList.map(async (param, i) => {
        try {
            await request.get({ url: "", qs: param }); // Endpoint removed
            if ((i + 1) % 10000 == 0) {
                console.info(`${i + 1} rows ${paramList.length} sent.`);
            }
        } catch (e) {
            console.info(`Request failed for row ${i + 1} .\n\n${e}`);
            errors++;
        }
    }));
    console.info(`Done.`);
    if (errors > 0) {
        console.info(`Total errors: ${errors}`);
    }
};

Приведенный выше код отлично работает для пары строк (10), но ошибка начинает появляться при попытке с большими числами (1000). "Готово". сообщение также не появилось в журналах, поэтому не похоже, что функция подошла к концу.

Какие-нибудь подсказки?

Переписал код для использования обещаний и попробовал среду выполнения Node.js 6, и она сработала. Не уверен, что с кодом что-то не так или проблема связана со средой выполнения Node.js 8.

taksqth 11.01.2019 00:10

У меня точно такие же симптомы, но в довольно большом проекте, который я действительно не хотел переписывать для Node 6 ... Он отлично работает до тех пор, пока количество исходящих HTTP-запросов не достигнет нескольких сотен, а затем начнется сбой с эта полезная ошибка.

dsl101 21.02.2019 12:04

похоже на ту же проблему, что и у меня ... есть идеи?

Diego Sucaria 08.03.2019 18:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
880
1

Ответы 1

У меня была такая же ошибка в моем проекте. Я решил это, понизив время выполнения с node8 до node6

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