Google App Engine cron 作业计划在 DST 更改的日子重复

Google App Engine cron job schedule repeat on days with DST changes

我有一个 cron 作业应该每 3 小时重复一次,并且必须在 US/NY 时间内到达 9:30。

如果我在 0:30 开始工作,并且 运行 每 3 小时工作一次,在夏令时 9:30 会 运行 吗?

文档对此有点含糊:https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules#daylight_savings_time。它使用挂钟时间开始,但每个偏移量是否也使用挂钟时间?

或者,我可以使用 9:30 作为触发时间开始它,然后每 3 小时一次,直到第二天 6:30am 吗?

完全避免 DST 更改出现任何类型问题的最佳方法是切换到不受这些更改影响的时区,如文档所述:

If your job requires a very specific cadence, you may want to consider choosing time zones that do not observe daylight savings time.

例如,一个好的时间是 UTC,由于 NY(GMT -4) 和 UTC(GMT) 之间的差异是 4 小时,您只需将 4 添加到您想要的开始时间。 这样一来,您就可以确保预定的时间不会被修改,并且您期望的任何事情 运行 都会按原样完成。

关于触发器的开始时间,不管是0:30还是9:30,一旦创建,每隔X[=17=就会运行 ] 因为你会事先指定它。

如您所述,Cloud scheduler 使用挂钟时间,预计执行会根据挂钟时间发生变化。

要 运行 从 9:30am 到 6:30am(第二天)的作业,您需要 2 个调度程序作业

第一个将是 运行,从 9:30 到 23:30

每 3 小时一次
30 9/3 * * *

第二个将是 运行 每 3 小时一次,从 0:30 到 6:30

30 0-6/3 * * *

当我对 cron 格式有疑问时,我会使用这个 page