是否有响应代码可将 Google Cloud 任务标记为永久失败,以便它不会重试?

For*_*man 2 google-cloud-functions google-cloud-firestore google-cloud-tasks

我有一个 Firebase HTTPS 函数,可以发送定时消息并由 Google Cloud Tasks 触发。

根据 Cloud Tasks 文档,任何超出 200 范围的响应代码都将被视为失败,并将触发重试。

此功能需要扩展到每日数百万条消息,因此我们需要避免重试永久失败的消息(用户选择退出等)。

注意:这在此示例中尤其重要,因为每个任务都需要在处理之前查找最新信息,从而为每次尝试添加 2-10 个 Firestore 读取。我们无法在有效负载中发送此信息,因为它可能在消息排队和处理之间发生变化。

使用云任务 API 删除任务很容易,但我想知道是否有任何 HTTP 响应代码(或标头)可以将这些任务标记为永久失败(例如 400 错误请求)并且不重试它们。

gui*_*ere 5

只有 HTTP 代码 2XX(从 200 到 299)被视为任务完成并停止重试。

所有其他返回代码均被视为失败并意味着重试。

注意:429(对于 App Engine 任务队列为 503)会限制队列上的重试(以防止服务拥塞)。


如果您想停止Cloud Task的重试机制,请返回2XX代码。这是唯一的办法。

您可以想象返回 299 并在此特定代码上插入错误报告警报以跟踪它们并在这些情况下收到警报