我使用 Cloud Scheduler 触发 HTTP 端点,http 请求仍在处理中,但云调度程序已经显示结果显示“失败”。该请求将花费一个多小时。请注意我使用了手动缩放(可以处理 24 小时的请求)。我哪里做错了?
3 回答
我了解,经过几分钟的处理,您的 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 获得。
根据文档:
如果您设置了具有适当凭据的关联服务帐号,Cloud Scheduler 可以调用需要身份验证的 HTTP 目标。
请确保 Cloud Scheduler 已确定用于从 Cloud Scheduler 调用您的 HTTP 目标的服务帐户。
此外,Cloud Scheduler 本身必须拥有自己的服务帐户,该服务帐户已授予 Cloud Scheduler 服务代理角色,以便授予适当的权限。
通过执行后续步骤,您应该能够成功创建和设置 Cloud Scheduler 作业:
按照此快速入门了解 Cloud Scheduler 的工作原理。
在这里,您可以找到有关适当配置 cron 作业计划的信息。
在这里,您可以找到有关使用 HTTP 目标身份验证创建调度程序作业的文档。
如果您在作业失败时收到任何错误,请通过编辑您的答案在此处提供,以便我们澄清情况。
我希望这个信息帮助。
当前云调度程序没有用于设置的 GUI,attempt_deadline
因此只能使用gcloud
. attempt_deadline
并且目标云调度程序可以满足的服务是有限度的。
对于此截止日期允许的持续时间是:
对于 HTTP 目标,介于 15 秒和 30 分钟之间。对于 App Engine HTTP 目标,介于 15 秒和 24 小时之间。对于 PubSub 目标,此字段将被忽略。
有了这个,因为我不想将我的目标更改为 AppEngine HTTP。我刚刚创建了一个新的 HTTP 目标,它将重定向到所需的 HTTP 目标。使用该云调度程序请求超时将不会达到。