云函数 定时触发器

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

相关产品
云函数 产品页,含版本规格、价格与购买入口。

·Push 模型:定时器指定时间到达时直接调用相关函数的 Invoke 接口来触发函数。该事件源映射关系保存在 SCF 函数中。

·异步调用:定时器始终使用异步调用类型来调用函数,结果不会返回给调用方。有关调用类型的更多信息,请参阅 调用类型。

一、定时触发器属性

·定时器名称(必选):最大支持60个字符,支持 a-z,A-Z,0-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-z,A-Z,0-9,-和_。必须以字母开头,且一个函数下不支持同名的多个定时触发器。
Time 触发器创建时间,0时区。
Message 字符串类型。
赞 (0)
上一篇 4天前
下一篇 4天前