Google Cloud Scheduler单触发器实现每月25日及月末9点触发配置
Google Cloud Scheduler 双时间点定时调度实现方案
Google Cloud Scheduler 基于 App Engine 标准cron规则实现,不支持L这类非标准cron通配符,无需创建多个触发器,单触发器配合轻量逻辑判断即可完全满足需求:
- 第一步配置cron调度规则,覆盖所有可能命中的日期:
该规则会在每月25、28、29、30、31日的上午9点触发请求,覆盖所有月份的25号,同时覆盖平年2月(28天)、闰年2月(29天)、30天小月、31天大月的所有月末日期,不会遗漏任何目标执行时间。0 9 25,28,29,30,31 * * - 第二步在调度指向的目标服务(Cloud Function、Cloud Run、通用HTTP服务均可)入口处加极简日期判断:
- 获取服务运行时的当前日期
- 计算当前日期所属月份的总天数,得到当月最后一天的日期值
- 仅当当前日期是25号,或当前日期是当月最后一天时,才执行实际业务逻辑;其余触发场景直接返回200成功响应,终止流程即可。
该方案的额外开销几乎可以忽略:非目标日期的触发仅执行几行基础日期计算,不会产生可感知的资源成本,也不会误执行业务逻辑,维护成本远低于多触发器方案,不需要针对不同天数的月份单独维护调度规则。
判断逻辑参考(Python版本,其他编程语言实现逻辑完全一致):
from datetime import date, timedelta def job_entry(request): today = date.today() # 计算当月最后一天:取下月1日往前推1天 if today.month == 12: next_month_start = date(today.year + 1, 1, 1) else: next_month_start = date(today.year, today.month + 1, 1) month_last_day = (next_month_start - timedelta(days=1)).day # 非目标日期直接跳过 if today.day not in (25, month_last_day): return "Skipped, not target date", 200 # 以下写入实际需要执行的业务逻辑 return "Job executed successfully", 200
内容的提问来源于stack exchange,提问作者winwin
相关产品推荐
相关产品推荐

