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