您可以使用 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 */
})
一些注意事项:
阅读此内容:https://firebase.google.com/docs/functions/retries 并确保您的函数是幂等的。
也很难发现要返回什么来强制重试或避免重试。
触发的 Firebase 函数必须返回一个 Promise。(参见 vid)
启用重试的 Firebase 函数将在以下情况下重试:
这意味着,如果您遇到一个您知道最终不会通过重试自行解决的错误(即您想停止函数执行而不是重试),您可以返回 Promise.resolve({message: 'some message'});