Облачное хранилище Google NodeJS getFilesStream Async - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть функция Google, которая никогда не возвращается; он просто достигает лимита времени ожидания как функция Google. Локально работает в течение 60 секунд. Не уверен, что проблема может быть. Код ниже:

/**
 * Responds to any HTTP request.
 *
 * @param {!express:Request} req HTTP request context.
 * @param {!express:Response} res HTTP response context.
 */
const {Storage} = require('@google-cloud/storage');
exports.main = async (req, res) => {
  const storage = new Storage({projectId: 'our-project'});
  const store = storage.bucket('our-bucket');
    const incomplete = {
    LT04: [],
    LT05: [],
    LE07: [],
    LC08: []
  };

  store.getFilesStream({prefix : 'prefixToMatch', autoPaginate : true })
    .on('error', (err) => {
      return console.error(err.toString())
    })
    .on('data', (file) => {
      // Find small/bad files
      if (file.metadata.size === 162) {
        const split = file.name.split('/');
        const prefix = split[2].substr(0, 4);
        incomplete[prefix].push(file.name);
      }
    })
    .on('end', () => {
      return JSON.stringify(incomplete, false, '  ');
    });
};

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Я думаю, проблема заключалась в том, что мне нужно было отправить «res.send» вместо Promise.resolve. Кроме того, мне нужно было удалить асин c перед функцией.

Спасибо за быстрый ответ с рекомендациями, ошибка была легче, чем, по-видимому.

0 голосов
/ 24 апреля 2020

Ваш код кажется нормальным. Но вам нужно принять во внимание некоторые дополнительные подробности об этом.

Достаточно ли для этого памяти вашей функции Cloud? Я думаю, что вы могли бы увеличить выделенную память вашего CF.

Вы уверены, что это связано с проблемой тайм-аута? Если вы не видели журналы, вы можете сделать это, перейдя в раздел Отчеты об ошибках.

В случае, если вы уже подтвердили это, можно было бы изменить время ожидания . продолжительность.

...