Cloud Scheduler 不尊重我的超时设置(编辑:与 CloudRun 无关)

Posted

技术标签:

【中文标题】Cloud Scheduler 不尊重我的超时设置(编辑:与 CloudRun 无关)【英文标题】:Cloud Scheduler does not respect my timeout settings (edit: not related to CloudRun) 【发布时间】:2020-04-18 14:43:59 【问题描述】:

我创建了一个请求超时为 900 秒的 CloudRun 容器。它是由 CloudScheduler cron 作业触发的,该作业也假设超时为 900 秒(使用“--timeout 900”),但在 300 秒后(默认超时)我收到 504 超时错误,并且我的容器会减速。

我遵循了这个答案:How to increase Cloud Scheduler request timeout deadline?,但它似乎不适用于非测试版 Cloud Scheduler。

【问题讨论】:

你好 Amir ... 我感觉到 Cloud Scheduler 向 Cloud Run 发送了一个 REST 请求。我感觉到您是在说您已将 Cloud Scheduler 配置为期望 Cloud Run 在 900 秒内得到响应。您能否详细说明“创建了一个请求超时为 900 秒的 CloudRun 容器”的含义。 感谢@Kolban!没错,我的意思是说我的 CloudRun 代码在 900 秒内完成运行,然后才回复 REST 请求。我现在明白这不是一个好习惯。我会尝试将其更改为在更短的周期内工作。 【参考方案1】:

attempt-deadline param is no longer in beta and you can set it up to 30 minutes for HTTP call。顺便说一句,它可以覆盖 900 秒(15 分钟)的最长 Cloud Run 持续时间。

编辑

您的案例很有趣,我为 terraform Google Cloud 项目做出了贡献。合并请求已被接受,但 terraform 尚未更新。

您可以通过示例找到详细信息here

【讨论】:

看起来像我需要的,但我目前找不到它在 terraform 中实现,我将使用默认超时并缩短我的工作。 能否请您详细说明一下您的整个工作流程。也许会有所帮助。 @AmirMehler,你之前没有谈论过 terraform!是的,我查看了文档和代码源,目前无法设置此参数。 谢谢大家 - 我不想在这里详细说明我的用例,因为这显然不是 CloudRun 和 CloudScheduler 的好习惯。我的案例需要一个长期运行的服务,而不是 CloudRun 的真正目标的短 HTTP 请求。无论如何,我会更新我的问题的标题,它应该只是“Cloud Scheduler 超时问题”,它与 CloudRun 无关。 只是为了确保理解。您想触发第一个端点以执行长时间运行的作业,然后触发另一个端点以保持实例正常运行并继续您的第一个请求(长时间运行的作业)的过程?

以上是关于Cloud Scheduler 不尊重我的超时设置(编辑:与 CloudRun 无关)的主要内容,如果未能解决你的问题,请参考以下文章

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

MongoClient 不尊重 connectTimeout

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

如果我的 Google Cloud Scheduler 作业失败,如何发送电子邮件提醒?

System.Net.Http.HttpClient 不尊重超时并每次使用默认值

nginx 502 阻碍 eb Worker 和 SQS 导致可见性超时不被尊重