我们要部署具有重试功能的云功能:
gcloud function deploy somefunc --retry
我们要确定要重试的功能:
if execution_is_a_retry = True:
...
我们如何识别功能正在重试?
上下文/事件数据中是否有某些参数?理想情况下,我们还会看到已发生的重试次数。
我知道execution_id
在原始运行和重试运行之间保持相同,但是检查的唯一方法是该函数是否将原始ID写入某处。在这种情况下,该函数可能会在成功将其execution_id
写入某处之前失败,然后随后的重试也不会被识别。
答案 0 :(得分:5)
重试调用本身不会将自己标识为重试。您将必须根据自己在context参数中传递的事件ID记录来自己确定。如果多次看到同一个事件ID,您将知道您的函数是根据先前的失败重试的。 您不会知道失败是由于您的功能还是Google基础架构中的某些原因。
如documentation中所述,您可以使用context.eventID
获得后台功能的事件ID。
如果您启用重试,则应调查making your function idempotent,以免不必要或有害地重复以前的工作。再次需要您保留一些记录才能正确实现此目的。