使用node-schedule每2小时触发函数失败,寻求解决方案
解决node-schedule每2小时定时任务的执行问题
你写的每2小时触发的cron表达式* */2 * * *存在错误,这会导致任务在每2小时周期内的每分钟都执行,而非预期的每2小时执行一次。
正确的解决方案
将分钟位指定为固定值(比如0,代表整点),修改后的表达式为0 */2 * * *,这样任务会每2小时触发一次。
修改后的代码示例:
import { scheduleJob } from 'node-schedule'; (async function() { // 每2小时触发一次(整点执行) const firstScheduler = scheduleJob('0 */2 * * *', async function() { // 现在可正常工作 }); // 每30分钟触发一次(保持原逻辑) const secScheduler = scheduleJob('*/30 * * * *', async function() { // 正常工作 }); })();
表达式逻辑说明
node-schedule遵循标准cron格式,顺序为:分钟 小时 日期 月份 星期
* */2 * * *:分钟位*表示每分钟都匹配,小时位*/2表示每2小时,组合后会在每2小时的时间段内每分钟执行一次0 */2 * * *:分钟位设为0,仅当分钟为0时匹配,结合小时位的每2小时规则,实现每2小时触发一次的需求
如果需要非整点触发(比如每2小时的第15分钟),可将分钟位改为对应数值,例如15 */2 * * *。
内容的提问来源于stack exchange,提问作者OpperDev
相关产品推荐
相关产品推荐

