定时触发器说明

最近更新时间:2023-08-24 18:16:53

我的收藏
用户可以编写 SCF 函数来处理定时任务(支持秒级触发)。定时器会在指定时间自动触发 SCF 函数。定时触发器具有以下特点:
Push 模型:定时器指定时间到达时直接调用相关函数的 Invoke 接口来触发函数。该事件源映射关系保存在 SCF 函数中。
异步调用:定时器始终使用异步调用类型来调用函数,结果不会返回给调用方。有关调用类型的更多信息,请参阅 调用类型

定时触发器属性

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

Cron 表达式

定时触发器现已推出秒级触发功能,创建定时触发器时,用户能够使用标准的 Cron 表达式的形式自定义何时触发。

Cron 表达式语法

Cron 表达式有七个必需字段,按空格分隔。
第一位
第二位
第三位
第四位
第五位
第六位
第七位
分钟
小时
星期
其中,每个字段都有相应的取值范围:
字段
通配符
特殊符号
0 - 59的整数
, - * /
分钟
0 - 59的整数
, - * /
小时
0 - 23的整数
, - * /
1 - 31的整数(需要考虑月的天数)
, - * /
? L W
1 - 12的整数或 JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
, - * /
星期
0 - 6的整数或 SUN,MON,TUE,WED,THU,FRI,SAT。其中0指星期日,1指星期一,以此类推。
, - * /
? L #
1970 - 2099的整数
, - * /

通配符

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

特殊符号

特殊符号
含义
?
只可使用在“日”字段、“星期”字段,表示不指定具体某日或星期几。例如:“日”字段指定为2,“星期”字段为“?”时,表示只判断日期为2日,而不指定2日为星期几。
L
只可使用在“日”字段、“星期”字段,表示“最后”。
在“日”字段,表示月份的最后一天;在“星期”字段,表示最后一个星期几,限定范围为0-6的整数,例如:5L 表示最后一个星期五。
W
只可使用在“日”字段,表示距离某日最接近的工作日(星期一到星期五)。例如:10W 表示离10日最接近的工作日,配合“月”字段,可表示 某月中最接近某日的工作日;“日”字段中,“L”与“W”组合为“LW”使用时表示月份的最后一个工作日。
#
只可使用在“星期”字段,且“#”前后必须给定数字,表示第几个星期几。“#”前的数字表示星期几,范围为0-6的整数;“#”后的数字表示第几个,范围为1-5的整数。例如:2#3 表示第三个星期二。

注意事项

1. 在 Cron 表达式中的“日”和“星期”字段同时指定具体值时,两者为“或”关系,即两者的条件分别均生效。
2. 使用“W”符号时,指定某日与其最近的工作日为同一月,不会跨月。如指定“1W”,即距离1日最接近的工作日,当1日为周六时,与1日最接近的工作日为本月3日(周一),而不是上月最后一日(周五)。

示例

下面展示了一些 Cron 表达式和相关含义的示例:
表达式
相关含义
*/5 * * * * * *
表示每5秒触发一次
0 15 10 1 * ? *
表示在每月的1日的上午10:15触发
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点触发
0 0 0 L * * *
表示在每月的最后一天的零时触发
0 0 0 * 5 4L *
表示在5月的最后一个周四的零时触发
0 0 0 12W 6 * *
表示在6月中最接近12日的工作日的零时触发
0 0 0 ? * 2#3 *
表示在每月的第三个星期二的零时触发
0 0 0 LW * ? *
表示在每月的最后一个工作日的零时触发

定时触发器入参说明

定时触发器在触发函数时,会把如下的数据结构封装在 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
字符串类型。