大多数firebase云功能触发器功能签名都包含具有db.task
属性的上下文对象。
查看文档,HTTPS触发似乎不是这种情况。
可以安全地假设对HTTP函数的调用在每个请求中只会触发一次吗?
答案 0 :(得分:2)
杰克的答案大部分是正确的,但我会在这里澄清。
有关执行语义is here的文档。要清楚:
HTTP函数最多调用一次。这是因为 HTTP调用具有同步性,这意味着出现任何错误 处理函数调用将返回,而无需重试。的 HTTP函数的调用者应处理错误并重试 如果需要的话。
不能保证HTTP函数完全执行一次。某些执行在到达功能之前可能会失败。这与至少提供一次执行的所有其他(后台)函数类型不同:
背景函数至少被调用一次。这是因为 处理事件的异步性质,其中没有调用者 等待响应并可以重试错误。发出的事件 调用该函数并可能在失败时重试(如果请求) 有关功能部署)和其他零星重复调用 原因(即使不要求重试失败)。
因此,要使后台函数100%正确,它们应该是幂等的。
如果您想重试失败的HTTP函数,则客户端将必须执行重试,在这种情况下,您可能还希望该HTTP函数也是幂等的。在这种情况下,客户端将必须提供重试的唯一密钥。
请注意,无法为内部重试标记HTTP函数。这仅适用于后台功能。
答案 1 :(得分:1)
与具有至少一次传递保证的后台函数相比,HTTPS函数只会触发一次。
(我在阅读它的地方找不到文档。如果找到它,我会更新问题)