定时触发器

最近更新时间:2019-06-14 14:32:16

用户可以编写 SCF 函数来处理定时任务(支持秒级触发)。定时器会在指定时间自动触发 SCF 函数。定时触发器具有以下特点:

  • Push 模型:定时器指定时间到达时直接调用相关函数的 Invoke 接口来触发函数。该事件源映射关系保存在 SCF 函数中。
  • 异步调用:定时器始终使用异步调用类型来调用函数,结果不会返回给调用方。有关调用类型的更多信息,请参阅 调用类型

定时触发器属性

  • 定时器名称(必选):最大支持60个字符,支持 a-zA-Z0-9-_。必须以字母开头,且一个函数下不支持同名的多个定时触发器。
  • 触发周期(必选):指定的函数触发时间。用户可以使用控制台上的默认值,或选择自定义标准的 Cron 表达式来决定何时触发函数。有关 Cron 表达式的更多信息,请参考下面的内容。
  • 入参(可选):最大支持4KB的字符串,可以在入口函数的 “event” 参数中获取。

Cron 表达式

创建定时触发器时,用户能够使用标准的 Cron 表达式的形式自定义何时触发。定时触发器现已推出秒级触发功能,为了兼容老的定时触发器,因此 Cron 表达式有两种写法。
创建定时触发器时,用户能够使用标准的 Cron 表达式的形式自定义何时触发。

Cron 表达式语法一(推荐)

Cron 表达式有七个必需字段,按空格分隔。

第一位 第二位 第三位 第四位 第五位 第六位 第七位
分钟 小时 星期

其中,每个字段都有相应的取值范围:

字段 通配符
0 - 59的整数 , - * /
分钟 0 - 59的整数 , - * /
小时 0 - 23的整数 , - * /
1 - 31的整数(需要考虑月的天数) , - * /
1 - 12的整数或 JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC , - * /
星期 0 - 6的整数或 MON,TUE,WED,THU,FRI,SAT,SUN;其中0指星期一,1指星期二,以此类推 , - * /
1970 - 2099的整数 , - * /

Cron 表达式语法二(不推荐)

Cron 表达式有五个必需字段,按空格分隔。

第一位 第二位 第三位 第四位 第五位
分钟 小时 星期

其中,每个字段都有相应的取值范围:

字段 通配符
分钟 0 - 59的整数 , - * /
小时 0 - 23的整数 , - * /
1 - 31的整数(需要考虑月的天数) , - * /
1 - 12的整数或 JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC , - * /
星期 0 - 6的整数或 MON,TUE,WED,THU,FRI,SAT,SUN;其中0指星期一,1指星期二,以此类推 , - * /

通配符

通配符 含义
,(逗号) 代表取用逗号隔开的字符的并集。例如:在“小时”字段中 1,2,3 表示1点、2点和3点
-(破折号) 包含指定范围的所有值。例如:在“日”字段中,1 - 15包含指定月份的1号到15号
\* (星号) 表示所有值。在“小时”字段中,\* 表示每个小时
/ (正斜杠) 指定增量。在“分钟”字段中,输入1/10以指定从第一分钟开始的每隔十分钟重复。例如,第11分钟、第21分钟和第31分钟,以此类推

注意事项

在 Cron 表达式中的“日”和“星期”字段同时指定值时,两者为“或”关系,即两者的条件分别均生效。

示例

下面展示了一些 Cron 表达式和相关含义的示例:

  • */5 * * * * * * 表示每5秒触发一次
  • 0 0 2 1 * * * 表示在每月的1日的凌晨2点触发
  • 0 15 10 * * MON-FRI * 表示在周一到周五每天上午10:15触发
  • 0 0 10,14,16 * * * * 表示在每天上午10点,下午2点,4点触发
  • 0 */30 9-17 * * * * 表示在每天上午9点到下午5点内每半小时触发
  • 0 0 12 * * WED * 表示在每个星期三中午12点触发

定时触发器入参说明

定时触发器在触发函数时,会把如下的数据结构封装在 event 里传给云函数。同时,定时触发器支持自定义传入 Message,缺省为空。

{
    "Type":"timer",
    "TriggerName":"EveryDay",
    "Time":"2019-02-21T11:49:00Z",
    "Message":"user define msg body"
}
字段 含义
Type 触发器的类型,值为 timer
TriggerName 定时触发器的名称。最大支持60个字符,支持 a-zA-Z0-9-_。必须以字母开头,且一个函数下不支持同名的多个定时触发器
Time 触发器创建时间,0时区
Message 字符串类型