gpt4 book ai didi

firebase - 以编程方式在 firebase 云功能中激活重试

转载 作者:行者123 更新时间:2023-12-03 20:28:31 25 4
gpt4 key购买 nike

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

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

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

有关如何解决此问题的任何提示?
卡斯腾

最佳答案

您可以使用 GCloud 控制台手动在 Firebase 函数中启用重试。在 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
  • 抛出异常
  • 或者函数超时

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

    关于firebase - 以编程方式在 firebase 云功能中激活重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55606808/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com