如何增加 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 请求超时期限?的主要内容,如果未能解决你的问题,请参考以下文章