Чтение из Firebase / Google Cloud Storage в качестве буфера в функции Node.js - PullRequest
0 голосов
/ 31 октября 2018

Я использую Node.js 8 версии функций Firebase и хотел бы извлечь файл из Google Cloud Storage в функцию как Buffer.

Это кажется простым:

const admin = require('firebase-admin')
const getRawBody = require('raw-body')

async function myFunction (path) {
  const bucket = admin.storage().bucket()
  const file = await bucket.file(path).get()
  console.log("All good so far.")
  const buffer = await getRawBody(file.createReadStream()) // often fails.
}

Файл, который я читаю, очень мал (130 КБ).

Это некоторое время работало , но теперь постоянно происходит сбой либо из-за ошибки ограничения памяти, либо из-за ошибки тайм-аута, что указывает на проблему Firebase / GCS.

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

Есть ли лучший способ преобразовать файл GCS в Buffer?

Если нет, можно ли обойти эту проблему?

1 Ответ

0 голосов
/ 01 ноября 2018

Проблема, по-видимому, была не в Google Storage, а скорее в использовании данных в другом месте, что вызвало переполнение памяти.

В результате операторы console.log не были записаны в журнал функций, связывая причину.

...