Azure Functions TimerTrigger特定时间调度不触发问题咨询
针对你遇到的间隔调度正常、特定时间Cron调度无触发且无日志的问题,可按以下步骤排查:
确认Cron表达式格式与时区匹配
Azure Functions TimerTrigger的Cron表达式顺序为秒 分 时 日 月 周,你提供的0 30 5 * * *(每日UTC5:30)和0 15 12 * * *(每日UTC12:15)格式正确,但需确保时区配置一致:- 本地运行或部署到Azure的函数默认使用UTC时区,若你在
host.json中手动指定了其他时区(如"timeZone": "Asia/Shanghai"),Cron表达式会基于该时区解析,导致触发时间偏离预期。
- 本地运行或部署到Azure的函数默认使用UTC时区,若你在
修改Cron表达式后重启函数宿主
不管是本地调试还是Azure部署,修改TimerTrigger的schedule参数后,必须重启函数应用才能加载新的调度配置。若未重启,函数仍会沿用旧的间隔调度逻辑,不会触发新的特定时间任务。检查日志级别配置
终端未出现触发日志可能是日志级别被过滤,需在host.json中确保函数日志级别设为Information:{ "version": "2.0", "logging": { "logLevel": { "Function.MyFunction": "Information" } } }本地运行时,也可在终端输出中查看函数宿主的启动日志,确认TimerTrigger是否已加载你设置的Cron表达式。
排查冷启动与资源限制(Azure部署场景)
若使用消费计划部署,函数可能因冷启动延迟触发,但完全无日志说明任务未被调度。可前往Azure门户查看函数的触发器历史记录,确认是否有触发记录或隐藏报错;同时检查函数应用的资源配额是否正常,避免因资源不足导致任务未执行。验证Cron表达式的实际触发时间
手动核对Cron表达式对应的UTC时间,避免因本地时区与UTC的差异误判触发时间。例如UTC5:30对应东八区北京时间13:30,若你在本地调试时误以为是北京时间5:30,就会错过触发时机。
内容的提问来源于stack exchange,提问作者Fig Bat

