Cloud Scheduler 结果失败,尽管 Http 请求仍然 运行

Cloud Scheduler Results Failed, Although Http Request still running

我在触发 HTTP 端点时使用了 Cloud Scheduler,http 请求仍在处理中,但 Cloud Scheduler 已经显示了它所说的结果 "failed"。该请求将花费一个多小时。请注意,我使用了手动缩放(可以处理 24 小时的请求)。我哪里错了?

根据文档:

Cloud Scheduler can call HTTP targets that require authentication if you have set up an associated service account that has the appropriate credentials.

  • 请确保 Cloud Scheduler 已识别用于从 Cloud Scheduler 调用您的 HTTP 目标的服务帐户。

  • 此外,Cloud Scheduler 本身必须有一个自己的服务帐户,该帐户已授予 Cloud Scheduler 服务代理角色,以便授予适当的权限。

通过执行后续步骤,您应该能够成功创建和设置 Cloud Scheduler 作业:

  1. 关注 this quickstart 以了解 Cloud Scheduler 的工作原理。

  2. Here 您可能会找到有关适当配置 cron 作业计划的信息。

  3. Here 您可能会找到有关通过对 HTTP 目标使用身份验证来创建调度程序作业的文档。

如果您在作业失败时收到任何错误,请通过编辑您的答案在此处提供,以便我们澄清情况。

希望这些信息对您有所帮助。

我了解到,经过几分钟的处理,您的 Cloud Scheduler 作业打印失败,即使 http 调用继续处理,错误代码在 return 中。如果是,那是因为Cloud Scheduler默认的超时时间是180s左右。

我认为这不是一个有据可查的部分,您不能通过 GUI 设置它,只能通过 gcloud 命令或 API 调用。

您可以通过自己设置 attempt-deadline 参数来覆盖它,例如 this with gcloud command. You have more detail in the grpc api。注意 HTTP 调用超时。限制为 30 分钟,但如果您通过 HTTP 调用 AppEngine,则限制为 24 小时。 因为你说你 used Manual Scaling (can process 24 hrs of request),我以为你在谈论 AppEngine

您还有另一个 retry parameters into Cloud Scheduler,也可通过 gcloud CLI 使用。

目前云调度程序没有用于设置 attempt_deadline 的 GUI,因此只能使用 gcloud 进行设置。云调度程序可以满足的服务目标有一个 attempt_deadline 限制。

此截止日期的允许持续时间为:

对于 HTTP 目标,在 15 秒到 30 分钟之间。对于 App Engine HTTP 目标,介于 15 秒和 24 小时之间。对于 PubSub 目标,此字段将被忽略。

有了这个,因为我不想将我的目标更改为 AppEngine HTTP。我刚刚创建了一个新的 HTTP 目标,它将重定向到所需的 HTTP 目标。使用该云调度程序请求超时将不会达到。