Google Cloud Function HTTPS触发器中的幂等性

时间:2018-12-19 12:35:12

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

大多数firebase云功能触发器功能签名都包含具有db.task属性的上下文对象。

查看文档,HTTPS触发似乎不是这种情况。

可以安全地假设对HTTP函数的调用在每个请求中只会触发一次吗?

2 个答案:

答案 0 :(得分:2)

杰克的答案大部分是正确的,但我会在这里澄清。

有关执行语义is here的文档。要清楚:

  

HTTP函数最多调用一次。这是因为   HTTP调用具有同步性,这意味着出现任何错误   处理函数调用将返回,而无需重试。的   HTTP函数的调用者应处理错误并重试   如果需要的话。

不能保证HTTP函数完全执行一次。某些执行在到达功能之前可能会失败。这与至少提供一次执行的所有其他(后台)函数类型不同:

  

背景函数至少被调用一次。这是因为   处理事件的异步性质,其中没有调用者   等待响应并可以重试错误。发出的事件   调用该函数并可能在失败时重试(如果请求)   有关功能部署)和其他零星重复调用   原因(即使不要求重试失败)。

因此,要使后台函数100%正确,它们应该是幂等的。

如果您想重试失败的HTTP函数,则客户端将必须执行重试,在这种情况下,您可能还希望该HTTP函数也是幂等的。在这种情况下,客户端将必须提供重试的唯一密钥。

请注意,无法为内部重试标记HTTP函数。这仅适用于后台功能。

答案 1 :(得分:1)

与具有至少一次传递保证的后台函数相比,HTTPS函数只会触发一次。

(我在阅读它的地方找不到文档。如果找到它,我会更新问题)