如何编写CRON表达式实现Azure WebJob工作日8:00、16:30触发
Azure WebJob 定时触发CRON表达式编写方案
核心规则前置说明
Azure WebJob 使用的是6位CRON表达式,和Linux默认的5位格式不同,字段顺序为:{秒} {分钟} {小时} {月内日期} {月份} {星期几}
- 星期几取值范围:0 = 周日,1 = 周一,5 = 周五,6 = 周六
- 通配符
*代表匹配该字段所有有效值
符合需求的CRON表达式
由于触发时间是两个独立的时分配对(8:00、16:30),无法用单个CRON表达式精准匹配,需要配置两个独立的触发规则:
- 每周一到周五上午8:00触发:
0 0 8 * * 1-5 - 每周一到周五下午16:30触发:
0 30 16 * * 1-5
字段拆解解释(以8:00的表达式为例)
- 第一位
0:仅第0秒触发 - 第二位
0:仅第0分钟触发 - 第三位
8:仅小时为8时触发 - 第四位
*:匹配任意日期 - 第五位
*:匹配任意月份 - 第六位
1-5:仅周一到周五触发
配置方式参考
1. 代码中使用TimerTrigger属性(适用于.NET WebJob)
直接在函数上标记两个Trigger即可:
public static void Run([TimerTrigger("0 0 8 * * 1-5")] TimerInfo timer1, [TimerTrigger("0 30 16 * * 1-5")] TimerInfo timer2, ILogger log) { // 你的业务逻辑 }
2. 无代码配置(通过settings.job文件)
如果是脚本类WebJob,在WebJob根目录创建settings.job文件,写入以下内容即可:
{ "schedule": "0 0 8 * * 1-5, 0 30 16 * * 1-5" }
注意事项
- 必须在Azure Portal的Web应用配置中开启「始终开启」选项,否则应用空闲回收后CRON不会触发
- 表达式的时间默认基于Web应用实例的UTC时区,如需使用北京时间,可在Web应用配置中添加应用设置
WEBSITE_TIME_ZONE,值设为China Standard Time
内容的提问来源于stack exchange,提问作者Pawlit16
相关产品推荐
相关产品推荐

