Cloud Scheduler 简介

您可以使用 Cloud Scheduler 设置工作单元日程安排,以便在规定的时间或者按一定的时间间隔执行这些任务。这些工作单元通常称为 Cron 作业。典型使用场景可能包括每天发送一封报告邮件、每 10 分钟更新缓存数据,或者每小时更新摘要信息。

使用 Cloud Scheduler 创建的每个 Cron 作业都会根据指定的时间表发送到一个“目标”,由目标来完成任务中包含的工作。目标必须是以下类型之一:

Cloud Scheduler 旨在提供至少一次传送;也就是说,作业在每次计划执行时至少运行一次。在极少数情况下,作业可能会与单个时间表实例关联运行多次,因此您的代码必须确保重复执行不会产生有害的副作用。您的目标应具有幂等性。

您可以使用 Cloud 控制台或 gcloud 命令行工具创建 Cron 作业。

按目标划分的受支持的区域

如果您的目标是 HTTP/S 端点或 Pub/Sub 主题,则 Cloud Scheduler 适用于 Cloud Scheduler 的所有受支持的 Google Cloud 区域。

如果您的目标是位于当前项目中的 App Engine 应用,请执行以下操作:

  • 只能在项目的 App Engine 区域中创建以 App Engine 为目标的 Cloud Scheduler 作业。

  • 一个 Google Cloud 项目只能包含一个 App Engine 应用,并且在创建应用后,无法更改 App Engine 应用所在的区域。

  • App Engine 具有区域性,这意味着运行您应用的基础架构位于特定区域中。如果您想在多个区域之间分配计算和作业,则应改为定位到 HTTP/S 端点或 Pub/Sub 主题。

  • 如果您不使用 App Engine 作为目标,则无需部署 App Engine 应用,并且可以停用任何现有的 App Engine 应用。

作业重试政策

如果 Cloud Scheduler 作业未成功完成,并且未收到来自作业处理程序的确认,则系统会根据其配置的重试政策,使用指数退避算法重试该作业。

您可以配置决定重试行为的设置。如需了解详情,请参阅重试作业。

作业请求去重

Cloud Scheduler 提供至少一次传送。如果目标响应时间超过作业的尝试截止时间 (attemptDeadline),或者暂时性网络中断导致 Cloud Scheduler 无法收到 HTTP 2xx 确认,则可能会出现针对同一预定运行的重复作业请求。

如需使作业处理程序具有幂等性并对重试的请求进行去重,您可以使用 Cloud Scheduler 在请求中包含的 X-CloudScheduler-JobName 和 X-CloudScheduler-ScheduleTime HTTP 标头。如需了解详情,请参阅删除重复的作业请求。