2

我使用 Cloud Scheduler 触发 HTTP 端点,http 请求仍在处理中,但云调度程序已经显示结果显示“失败”。该请求将花费一个多小时。请注意我使用了手动缩放(可以处理 24 小时的请求)。我哪里做错了?

4

3 回答 3

2

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

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

您可以通过设置自己的attempt-deadline参数来覆盖它,例如使用 gcloud command。您在grpc api中有更多详细信息。注意 HTTP 调用超时。限制为 30 分钟,除非您通过 HTTP 调用 AppEngine,此时您限制为 24 小时。因为你说你used Manual Scaling (can process 24 hrs of request),我假设你在谈论 AppEngine

您在 Cloud Scheduler中有另一个重试参数,也可以通过 gcloud CLI 获得。

于 2020-02-10T21:19:53.300 回答
1

根据文档:

如果您设置了具有适当凭据的关联服务帐号,Cloud Scheduler 可以调用需要身份验证的 HTTP 目标。

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

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

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

  1. 按照此快速入门了解 Cloud Scheduler 的工作原理。

  2. 在这里,您可以找到有关适当配置 cron 作业计划的信息。

  3. 在这里,您可以找到有关使用 HTTP 目标身份验证创建调度程序作业的文档。

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

我希望这个信息帮助。

于 2020-02-10T10:24:46.397 回答
1

当前云调度程序没有用于设置的 GUI,attempt_deadline因此只能使用gcloud. attempt_deadline并且目标云调度程序可以满足的服务是有限度的。

对于此截止日期允许的持续时间是:

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

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

于 2020-02-11T01:35:53.173 回答