如何增加 Cloud Scheduler 请求超时期限?

Posted

技术标签:

【中文标题】如何增加 Cloud Scheduler 请求超时期限?【英文标题】:How to increase Cloud Scheduler request timeout deadline? 【发布时间】:2019-09-16 08:33:53 【问题描述】:

我想从 App Engine Cron 作业迁移到 Cloud Scheduler,但在 Cloud Scheduler 中,请求截止时间超时为 60 秒,而不是来自 Cron 作业的请求的 10 分钟。

有没有办法将 Cloud Scheduler App Engine 请求的截止时间设置为 10 分钟?

【问题讨论】:

【参考方案1】:

根据他们的 scheduler.v1beta1,可以使用 attemptDeadline 设置截止日期。

作业尝试的截止日期。如果请求处理程序在此截止日期前没有响应,则取消请求并将尝试标记为 DEADLINE_EXCEEDED 失败。失败的尝试可以在执行日志中查看。 Cloud Scheduler 会根据 RetryConfig 重试作业。

此截止日期允许的持续时间是:

对于 HTTP 目标,介于 15 秒和 30 分钟之间。 对于 App Engine HTTP 目标,介于 15 秒和 24 小时之间。 对于 PubSub 目标,此字段将被忽略。

https://cloud.google.com/nodejs/docs/reference/scheduler/0.3.x/google.cloud.scheduler.v1beta1#.Job

【讨论】:

【参考方案2】:

这会将作业的最后期限设置为 30 分钟。这是 HTTP 目标的最大值。

gcloud beta scheduler jobs update http <job> --attempt-deadline=1800s --project <project>

此截止日期允许的持续时间是:对于 HTTP 目标,介于 15 秒和 30 分钟之间。对于 App Engine HTTP 目标,介于 15 秒和 24 小时之间。 以秒为单位的持续时间,最多九个小数位,以“s”结尾。示例:“3.5 秒”。

来源:https://cloud.google.com/scheduler/docs/reference/rest/v1/projects.locations.jobs#Job

【讨论】:

【参考方案3】:

当我们查看 Cloud Scheduler 时,我们会看到当达到触发作业的时间时,触发该作业的请求可能会失败。此时,将根据该作业的配置重试请求……请参阅:

https://cloud.google.com/sdk/gcloud/reference/beta/scheduler/jobs/create/http

在这些设置中,我们发现:

--max-backoff --max-doublings --max-retry-attempts --max-retry-duration --min-backoff

如果我们想继续尝试整整 10 分钟,我们似乎可以指定:

--max-backoff: 0s --max-doublings: 0 --max-retry-attempts: 0 --max-retry-duration: 10m --min-backoff: 0s

【讨论】:

这对我不起作用,仍然有随机超时。添加后 --attempt-deadline=10m 成功了!

以上是关于如何增加 Cloud Scheduler 请求超时期限?的主要内容,如果未能解决你的问题,请参考以下文章

Cloud Scheduler 调用的 GCP Cloud Run 应用的当前最大超时是多少

验证来自 Google Cloud Scheduler 的 HTTP 请求

如何编辑 Google Cloud 任务的默认超时(使用 http 目标,而不是应用引擎)?

如何在使用 Cloud Scheduler 发出的 HTTP POST 请求上添加 JSON 正文?它会添加“Content-Type”:“application/json”标头吗?

如何为 Google Cloud Scheduler 设置基本身份验证

Spring Cloud Feign 重试机制-如何实现请求重试