【问题标题】:Activate retry in firebase cloud function programmatically以编程方式激活 Firebase 云功能中的重试
【发布时间】:2019-08-31 13:45:29
【问题描述】:

我正在部署 firebase 云功能,以通过持续部署来监听我们的 firestore 中的变化。

我只能找到一种方法来激活重试manually。这与我们的 cd 方法相反。

看正常gcp cloud functions部署的时候可以给出重试标志。但我在 firebase-cli 或 firebase-functions 接口 (2.1.0) 中找不到类似的选项

关于如何解决这个问题的任何提示? 卡斯滕

【问题讨论】:

    标签: firebase google-cloud-firestore google-cloud-functions


    【解决方案1】:

    目前没有类似的使用 Firebase CLI 进行部署的选项。

    这是 Firebase 团队正在处理的事情,敬请期待更新。

    【讨论】:

      【解决方案2】:

      您可以使用 GCloud Console 在 Firebase Functions 中手动启用重试。在firebase-functions 3.10.0 中添加了以编程方式重试基于触发器的函数(请参阅changelog 和相关的pull request)。

      由于从 PR 或文档中并不完全明显,这里有一个简单的语法示例:

      export const myFirebaseFunc = functions
        .runWith({
          failurePolicy: {
            retry: {},
          },
          memory: '512MB',
          timeoutSeconds: 60,
        })
        .firestore.document('/path/to/some/doc')
        .onCreate(async (snap, context) => {
         /* do stuff */
       })
      

      在撰写本文时,故障策略似乎只是打开或关闭。因此,这是等价的

      export const myFirebaseFunc = functions
        .runWith({
          failurePolicy: true,
          memory: '512MB',
          timeoutSeconds: 60,
        })
        .firestore.document('/path/to/some/doc')
        .onCreate(async (snap, context) => {
         /* do stuff */
       })
      

      一些注意事项:

      • 您还必须使用 --force 进行部署

      • 您只能对触发的函数启用重试,而不是 http 调用的函数。

      • 不建立一些保护措施是愚蠢的。重试策略最长为 7 天,并且与任何其他函数调用一样计费,因此如果您有一些未处理的错误,它可能会重复运行一整周。您可以使用context.eventTimestamp 了解第一次尝试的大致开始时间。

      阅读此内容:https://firebase.google.com/docs/functions/retries 并确保您的函数是幂等的。

      也很难发现要返回什么来强制重试或避免重​​试。 触发的 Firebase 函数必须返回一个 Promise。(参见 vid

      启用重试的 Firebase 函数将在以下情况下重试:

      • 它返回一个被拒绝的承诺
      • 抛出异常
      • 或函数超时

      这意味着,如果您遇到一个您知道最终不会通过重试自行解决的错误(即您想停止函数执行而不是重试),您可以返回 Promise.resolve({message: 'some message'});

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多