如何增加 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”标头吗?