Firebase Cloud Functions 提高时间限制

问题描述 投票:0回答:1

我为 Firebase 编写了一个云函数,它是一个 https 可调用的函数,应该删除文件夹内的所有文件。看起来是这样的:

import * as functions from "firebase-functions";
const admin = require('firebase-admin');
admin.initializeApp();
const {Storage} = require("@google-cloud/storage");
const storage = new Storage({keyFilename: "myserviceaccount.json"});
const fileBucket = "myfilebucket";


    exports.deleteFolder = functions.https.onCall(async (data, context) => {
  if (!context.auth) {
    throw new functions.https.HttpsError(
        "unauthenticated",
        "only authenticated users can add requests"
    );
  }
 
  const bucket = storage.bucket(fileBucket);
  return bucket.deleteFiles({
    prefix: `${data.folderName}`,
  }, function(err:any) {
    if (err) {
      console.log(err);
    } else {
      // eslint-disable-next-line max-len
      console.log(`All the Firebase Storage files in users/${data.folderName}/ have been deleted`);
    }
  });
});

效果很好。但我的文件夹有时会包含相当多的文档,因此我在部署此功能时得到的 60 秒的标准时间限制有时不足以删除文件夹内的所有文件。所以我想将计算时间限制提高到540秒,这是根据Cloud Functions我可以获得的最大计算时间。但我找不到这样做的可能性。

如何提高单个 https 可调用函数的时间限制?

node.js firebase google-cloud-platform google-cloud-functions google-cloud-storage
1个回答
3
投票

doc中所述,您需要执行以下操作:

const runtimeOpts = {
        timeoutSeconds: 540
      }


exports.deleteFolder = functions
                        .runWith(runtimeOpts)
                        .https
                        .onCall(async (data, context) => {...});

请注意,您还可以通过 Google Cloud Console(不是 Firebase 控制台)配置此值。

在 Google Cloud Console 中,选择您的 Firebase 项目,选择“Cloud Functions”垂直菜单项,单击函数名称,然后单击“编辑”按钮。然后单击“VARIABLEs, ....”部分标题(如下所示)并调整相应字段中的超时值。

© www.soinside.com 2019 - 2024. All rights reserved.