本文为您介绍在进入和退出夏令时的时候,对调度任务实例生成和定时时间的影响。若您的工作空间所在地域施行夏令时,您可通过本文了解DataWorks对于进入和退出夏令时的相关处理策略。
功能介绍
DataWorks提供夏令时自动切换功能,可保障在进入和退出夏令时当天,任务能够正确运行。以美国西部时间的小时任务为例,施行夏令时的地域,进入和退出夏令时当天处理逻辑如下:
-
进入夏令时:
-
实例个数:
02:00为夏令时的开始时间,时钟会拨快一小时,即将02:00拨至03:00,因此02:00不会生成实例,小时调度任务在夏令时当天会产生23个实例。 -
实例定时时间:因夏令时开始,导致时间偏移,部分任务的定时运行时间会被提前。例如,原小时任务第四个周期的定时时间本该为
04:00,进入夏令时当天,小时任务第四个实例的定时时间将变为05:00。
说明-
进入夏令时当天的日、周、月调度节点,如果设置的定时运行时间正好是被跳过的时间段,该任务不会运行,该实例将空跑。
-
实际当天
03:00往前偏移10分钟的结果会变为01:50。
-
-
退出夏令时:
实例个数:小时调度任务会产生24个实例(实际会生成两个定时时间
02:00的实例,但只保留第二个定时时间02:00的实例)。说明当天
02:00往前偏移10分钟的结果仍然是02:50。
使用限制
进入和退出夏令时,仅对实行夏令时的地域有影响。
进入夏令时的影响示例
影响一:实例生成
-
场景一:对小时、分钟任务的影响。
以小时周期任务为例,调度任务的调度时间配置如下,该场景每小时生成一个实例,正常情况下每天生成24个实例。进入夏令时的当天,只会生成23个实例,缺少
02:00生成的实例。说明02:00为夏令时的开始时间,时钟会拨快一小时,即将02:00拨至03:00,因此02:00不会生成实例。调度配置采用小时区间模式,开始时间为 00:00,结束时间为 23:59,生效日期选择永久生效,对应Cron表达式为
00 00 00-23/1 * * ?。 -
场景二:对天任务的影响。
天调度任务,进入夏令时的当天同样也会生成一个调度实例,但该任务是否正常执行与您任务的定时时间有关。
-
如果调度任务的定时时间正好在
02:00~03:00之间,则系统会把定时时间延迟1小时,并且将该实例运行状态设置为空跑。 -
如果任务定时时间不在
02:00~03:00之间,则任务正常执行。
在调度时间配置中,调度周期选择日,调度时间设置为
02:00,生效日期选择永久生效,对应的Cron表达式为00 00 02 * * ?。 -
影响二:参数替换
-
场景一:若调度任务的定时时间为
03:00,调度参数配置为$[hh24-1/24],则参数取值正常替换为02:00,当进入夏令时的时候,该参数将替换为01:00。 -
场景二:若调度任务的定时时间为
02:00,调度参数配置为$[hh24-1/24],则参数取值正常替换为01:00,当进入夏令时的时候,该参数将替换为01:00。若任务为天调度任务,该天调度实例将空跑。
退出夏令时的影响示例
影响一:实例生成
以小时任务为例,退出夏令时当天,一天实际有25个小时(包含两个02:00),小时调度任务生成的实例还是24个(只会取第二个02:00的实例)。
影响二:参数替换
退出夏令时当天,实际有25个小时(包含两个02:00),小时调度任务生成的实例还是24个(只会取第二个02:00实例)。若任务的调度参数存在一些基于实例定时时间的计算,则可能会受到此25个小时的时间影响,存在偏差。具体场景如下:
-
场景一:若调度任务的定时时间为
03:00,调度参数配置为$[hh24-2/24],则参数取值正常替换为01:00,当退出夏令时的时候,该参数将替换为02:00。 -
场景二:若调度任务的定时时间为
02:00,调度参数配置为$[hh24-1/24],则参数取值正常替换为01:00,当退出夏令时的时候,该参数将替换为02:00。