Ответ 1
Я исправил его проблему, используя запрос lib (2.83.0) вместо "request-prom". Вот упрощенный код, который я использую:
const request = require('request').defaults({
timeout: 500000,
gzip: true,
forever: false,
pool: {
maxSockets: Infinity
}
});
const Storage = require('@google-cloud/storage');
const storage = new Storage();
storage.interceptors.push({
request: function(reqOpts) {
reqOpts.forever = false;
return reqOpts
}
});
/**
* HTTP Cloud Function.
*
* @param {Object} req Cloud Function request context.
* @param {Object} res Cloud Function response context.
*/
exports.exportToGCS = function exportToGCS(req, res) {
var bucket = req.body.bucket;
var fileName = req.body.fileName;
try {
console.log("Getting bucket " + bucket + "...");
var bucket = storage.bucket(bucket);
console.log("Creating file " + fileName + "...");
const file = bucket.file(fileName);
console.log("Creating writeStream...");
var writeStream = createWriteStream(file);
// Get the stream from a request to send out to GCS
var options = createRequest();
request
.get(options)
.pipe(writeStream);
console.log("Streaming to Storage...");
res.send("The export has been successfully initialized");
} catch (e) {
console.error(e.message, e.name);
res.status(500).send("An error occurred during the export initialization");
}
};
// Initialize the PDF write stream
function createWriteStream(file) {
var writeStream = file.createWriteStream({
metadata: {
//metadata you want to set
}
});
writeStream .on('error', function(e) { console.error("An error occurred : " + e); });
writeStream .on('finish', function() { console.log("Export completed"); });
return writeStream ;
}
Надеюсь, что это поможет!