您可以使用 Cloud Scheduler 设置工作单元日程安排,以便在规定的时间或者按一定的时间间隔执行这些任务。这些工作单元通常称为 Cron 作业。典型使用场景可能包括每天发送一封报告邮件、每 10 分钟更新缓存数据,或者每小时更新摘要信息。
使用 Cloud Scheduler 创建的每个 cron 作业将根据指定时间表发送到“目标”,并在其中完成该任务包含的工作。目标必须是以下类型之一:
- HTTP/S 端点
- Pub/Sub 主题
- App Engine HTTP/HTTPS 应用
Cloud Scheduler 旨在提供“至少一次”交付;也就是说,作业将至少按计划执行一次。在极少数情况下,作业可能会与单个调度实例关联运行多次,因此您的代码必须确保重复执行不会产生任何有害的副作用。目标应具有幂等性。
您可以使用 Cloud 控制台或 gcloud 命令行工具创建 Cron 作业。
支持的定位区域
如果您的目标是 HTTP/S 端点或 Pub/Sub 主题,则 Cloud Scheduler 在所有 Cloud Scheduler 支持的 Google Cloud 区域中均可使用。
如果您的目标是位于当前项目中的 App Engine 应用:
以 App Engine 为目标的 Cloud Scheduler 作业只能在项目的 App Engine 区域中创建。
一个 Google Cloud 项目只能包含一个 App Engine 应用,并且应用创建后无法更改 App Engine 应用所在的区域。
App Engine 具有区域性,这意味着运行您应用的基础架构位于特定区域中。如果您想在多个区域中分布计算和作业,则应改为定位到 HTTP/S 端点或 Pub/Sub 主题。
如果您不使用 App Engine 作为目标,则无需部署 App Engine 应用,并且可以停用任何现有的 App Engine 应用。
作业重试政策
如果 Cloud Scheduler 作业未能成功完成,并且未从作业处理程序收到确认,系统将根据其配置的重试政策,使用指数退避算法重试该作业。
您可以配置用于确定重试行为的设置。如需了解详情,请参阅重试作业。
求职申请去重
Cloud Scheduler 提供的标头可帮助对作业请求进行去重,从而使请求处理程序具有幂等性。您可以使用作业请求的名称和 X-CloudScheduler-ScheduleTime 标头来唯一标识作业请求。此标头包含原始的预定调用时间,并且在重试尝试中保持不变。