मैं Firebase फ़ंक्शन के Node.js 8 संस्करण का उपयोग कर रहा हूं और Google क्लाउड स्टोरेज से फ़ंक्शन में 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.
}

मैं जो फ़ाइल पढ़ रहा हूँ वह बहुत छोटी है (130kb)।

यह कुछ समय के लिए काम करता था, लेकिन अब मेमोरी सीमा त्रुटि या टाइमआउट त्रुटि के साथ लगातार विफल रहता है, जो फायरबेस/जीसीएस समस्या का सुझाव देता है।

मुझे पता है कि मैं फ़ंक्शन के लिए मेमोरी सीमा बढ़ा सकता हूं, लेकिन अगर यह एक छोटी सी छोटी फ़ाइल में विफल होने पर काम पर बड़ी समस्याओं का सुझाव देता है और यह हमेशा बड़ी फ़ाइलों पर विफल हो जाएगा।

क्या GCS फ़ाइल को Buffer में बदलने का कोई बेहतर तरीका है?

यदि नहीं, तो क्या इस समस्या को हल किया जा सकता है?

8
Brian M. Hunt 31 अक्टूबर 2018, 14:51

1 उत्तर

सबसे बढ़िया उत्तर

समस्या स्पष्ट रूप से Google संग्रहण की नहीं थी, बल्कि कहीं और डेटा के उपयोग से मेमोरी ओवरफ़्लो हुई।

परिणामस्वरूप, console.log स्टेटमेंट्स को फंक्शन लॉग में रिकॉर्ड नहीं किया जा रहा था, जो कारण को स्पष्ट करता है।

0
Brian M. Hunt 1 नवम्बर 2018, 17:47