夏令时切换对调度任务运行的影响

本文为您介绍在进入和退出夏令时的时候,对调度任务实例生成和定时时间的影响。若您的工作空间所在地域施行夏令时,您可通过本文了解DataWorks对于进入和退出夏令时的相关处理策略。

背景信息

DataWorks可保障在进入和退出夏令时当天,任务能够正确运行。以美国西部时间的小时任务为例,施行夏令时的地域,进入和退出夏令时当天处理逻辑如下:

  • 进入夏令时:

    image
    • 实例个数02:00为夏令时的开始时间,时钟会拨快一小时,即将02:00拨至03:00,因此02:00不会生成实例,小时调度任务在夏令时当天会产生23个实例。

    • 实例定时时间:因夏令时开始,导致时间偏移,部分任务的定时运行时间会被提前。例如,原小时任务第四个周期的定时时间本该为04:00,进入夏令时当天,小时任务第四个实例的定时时间将变为05:00

    说明
    • 进入夏令时当天的日、周、月调度节点,如果设置的定时运行时间正好是被跳过的时间段,该任务不会运行,该实例将空跑

    • 实际当天03:00往前偏移10分钟的结果会变为01:50

  • 退出夏令时:

    image

    实例个数:小时调度任务会产生24个实例(实际会生成两个定时时间02:00的实例,但只保留第二个定时时间02:00的实例)。

    说明

    当天02:00往前偏移10分钟的结果仍然是02:50

使用限制

进入和退出夏令时,仅对施行夏令时的地域有影响。

进入夏令时的影响示例

影响一:实例生成

  • 场景一:对小时、分钟任务的影响。

    以小时周期任务为例,调度任务的调度时间配置如下图,该场景每小时生成一个实例,正常情况下一天生成24个实例。进入夏令时的当天,只会生成23个实例,缺少02:00生成的实例。

    说明

    02:00为夏令时的开始时间,时钟会拨快一小时,即将02:00拨至03:00,因此02:00不会生成实例。

    image

  • 场景二:对天任务的影响。

    天调度任务,进入夏令时的当天同样也会生成一个调度实例,但该任务是否正常执行与您任务的定时时间有关。

    • 如果调度任务的定时时间正好在02:00~03:00之间,则系统会把定时时间延迟1小时,并且将该实例运行状态设置为空跑

    • 如果任务定时时间不在02:00~03:00之间,则任务正常执行。

    任务调度周期配置示例如下:

    image

影响二:参数替换

  • 场景一:若调度任务的定时时间为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