美文网首页
egg.js基础功能1 -- 定时任务

egg.js基础功能1 -- 定时任务

作者: 卡布奇诺_flygrk | 来源:发表于2019-08-14 10:00 被阅读0次

    egg定时任务

    需求

    近期接到一个任务,使用egg每日定时刷新数据库的内容,那么如何去编写一个定时任务呢?

    调研

    访问egg官网的教程,我们可以看到其存在定时任务这一项(https://eggjs.org/zh-cn/basics/schedule.html
    )。

    使用

    在官网的教程中,我们可以很简单的了解到egg对于定时任务封装后的使用简便。可以说是相当easy了。

    主要有以下2种方式的定时方式:

    • interval:通过 schedule.interval 参数来配置定时任务的执行时机,定时任务将会每间隔指定的时间执行一次;
    • cron: 通过 schedule.cron 参数来配置定时任务的执行时机,定时任务将会按照 cron 表达式在特定的时间点执行。

    两种方式都是相当简单的,这里我们先来看下代码逻辑:

    module.exports = {
        schedule: {
            cron: '0 0 2 * * ?', // 每日2点执行
            // interval: '1m', // 1 分钟间隔
            type: 'all', // 指定所有的 worker 都需要执行
        },
        async task(ctx) {
            const { exportRemoteService } = ctx.service;
            console.log("执行exportRemoteService.export(), 时间点: " + new Date().getTime());
            exportRemoteService.export();
        },
    };
    
    

    注意:
    框架提供的定时任务默认支持两种类型,worker 和 all。worker 和 all 都支持上面的两种定时方式,只是当到执行时机时,会执行定时任务的 worker 不同:

    • worker 类型:每台机器上只有一个 worker 会执行这个定时任务,每次执行定时任务的 worker 的选择是随机的。
    • all 类型:每台机器上的每个 worker 都会执行这个定时任务。

    相关文章

      网友评论

          本文标题:egg.js基础功能1 -- 定时任务

          本文链接:https://www.haomeiwen.com/subject/iovwjctx.html