Cloud Scheduler未遵循attemptDeadline 1分钟报DEADLINE_EXCEEDED
问题描述
- 配置了HTTP类型Cloud Scheduler任务,预期最长运行时长5分钟,实际运行满1分钟就返回DEADLINE_EXCEEDED报错
- 执行
gcloud scheduler jobs describe MySyncTask查询任务配置,返回结果显示attemptDeadline: 300s,配置符合预期 - 任务调用的后端为Cloud Run服务,已将该服务的实例超时限制设置为300秒
- 通过Web控制台点击「force a job run」按钮手动触发任务时,稳定复现1分钟触发超时的问题
- 报错截图:

问题根因
这个1分钟超时和你配置的Scheduler任务超时、Cloud Run服务超时无关,是Cloud Scheduler控制台强制运行(Force Run)功能的硬编码限制:
控制台的强制触发按钮,前端发起的操作等待请求固定超时时间为60秒,只要后端任务执行时长超过1分钟,控制台侧的等待连接就会主动断开,返回DEADLINE_EXCEEDED错误。
这个报错仅代表控制台侧的等待操作超时,不会中断实际运行的Scheduler任务和Cloud Run实例:查看Cloud Run的运行日志可以确认,任务实际会继续执行到你配置的300秒时长上限才会结束,不会在1分钟节点被强制终止。
验证&处理方式
- 测试长耗时任务不要通过控制台Force Run按钮触发,使用gcloud命令触发即可:
gcloud scheduler jobs run MySyncTask - 正常配置的定时触发(非控制台手动强制触发)场景下,任务会严格遵循你设置的
attemptDeadline规则执行,不会出现1分钟超时的问题 - 触发后对照查看Cloud Scheduler执行历史、Cloud Run请求日志,即可确认任务可以完整运行到预期时长。
内容的提问来源于stack exchange,提问作者Taylor j. Eke
相关产品推荐
相关产品推荐

