我正在部署 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
进行部署context.eventTimestamp
知道第一次尝试大概是什么时候开始的。请阅读:https://firebase.google.com/docs/functions/retries并确保您的功能是幂等的。
也很难发现返回什么来强制重试或避免重试。
触发的 Firebase 函数必须返回一个 Promise。 (见此 vid)
如果出现以下情况,启用重试的 Firebase 函数将重试:
这意味着,如果您遇到一个错误,而您知道该错误最终不会通过重试自行解决(即您想停止函数执行而不是重试),您可以返回
Promise.resolve({message: 'some message'});
关于firebase - 以编程方式在 firebase 云功能中激活重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55606808/