【问题标题】:GCP Cloud Scheduler job for App Engine HTTP target is timing out after 10 minutesApp Engine HTTP 目标的 GCP Cloud Scheduler 作业在 10 分钟后超时
【发布时间】:2020-07-06 07:31:21
【问题描述】:

我有一个 App Engine 应用程序,其中有一些 App Engine cron 作业耗时超过 10 分钟,因此失败(由于 App Engine cron 作业的最大时间限制为 10 分钟)。

我决定将其移至 Cloud Scheduler 并使用以下参数创建一个具有 App Engine HTTP 目标的作业。 (attempt-deadline是我尝试增加时间的参数)

gcloud beta scheduler jobs create app-engine daily-import --schedule="0 */3 * * 1" --attempt-deadline=21600s --version="test-v1" --http-method="GET" --description="Daily Import" --relative-url="/api/test"

但令我惊讶的是,该作业在 10 分钟后仍然失败,并在记录器中弹出错误消息

"进程终止,因为超过了请求期限。请 确保您的 HTTP 服务器正在侦听 0.0.0.0 上的请求,并且 在 PORT 环境变量定义的端口上。 (错误代码 123)"

请注意端点正在运行(所需的代码正在执行,但由于截止日期而在两者之间失败)。

根据scheduler doc,App Engine HTTP 目标允许的持续时间在 15 秒到 24 小时之间。

有没有人遇到过类似的问题?可能的解决方案是什么?

【问题讨论】:

    标签: google-app-engine google-cloud-platform google-cloud-scheduler


    【解决方案1】:

    很难学会。它与云调度程序设置无关,而是我的 App Engine 的缩放类型。

    App Engine 共有三种缩放类型。

    1. 自动缩放
    2. 基本缩放
    3. 手动缩放
    • HTTP 请求和任务队列任务在 10 分钟后自动扩展请求超时。
    • 在基本伸缩和手动伸缩中,超时时间为24小时,但还需要考虑idle_timeout(实例关闭等待时间)

    因此,如果您有基本或手动扩展,您将有机会运行 24 小时的作业。为了避免云调度程序出现任何超时错误,您需要提供云调度程序的--attempt-deadline 参数(该参数应与您的作业完成的最长时间同步)。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 2020-03-20
      • 1970-01-01
      • 2023-03-27
      • 2013-04-08
      • 1970-01-01
      相关资源
      最近更新 更多