【问题标题】:NestJs how to run a cron job 3 times a day at specific timesNestJs如何在特定时间每天运行3次cron作业
【发布时间】:2020-09-02 21:00:51
【问题描述】:

我正在构建一个通知触发方法,并希望在特定时间每天运行 3 次。

我已检查文档,但不了解该正则表达式代码以及如何根据需要对其进行自定义!

现在我的方法看起来像这样:(它现在在第 45 秒运行每分钟进行测试)我需要它例如在每天下午 6 点、晚上 8 点、晚上 11 点运行

@Cron('45 * * * * *')
async sendNotificaiotns() {
    console.log('sending notification');

    try {
        const randomArticle = await this.articleRepository
            .createQueryBuilder()
            // .select("id")
            // .getMany();
            // .select("id")
            .orderBy("RAND()")
            .limit(1)
            .getOne();

        const input = new NotificationBySegmentBuilder()
            .setIncludedSegments(['Active Users', 'Inactive Users'])
            .notification() // .email()
            .setAttachments({
                data: {
                    ...randomArticle,
                },
                big_picture: encodeURI(randomArticle.image)
            })
            .setHeadings({ 'en': randomArticle.title })
            .setContents({'en': randomArticle.excerpt })
            .build();

        console.log(randomArticle);
        await this.oneSignalService.createNotification(input);

    } catch (e) {
        console.log(e);
    }
}

【问题讨论】:

    标签: javascript node.js typescript nestjs cron-task


    【解决方案1】:

    如果您需要在下午 6 点、晚上 8 点和晚上 11 点运行它,请尝试这样的操作。 (使用您的时区)

    var cron = require('node-cron');
    
    cron.schedule('0 18,20,23 * * *', () => {
       console.log('Runing a job at 6pm,8pm and 11pm at America/Sao_Paulo timezone');
     }, {
       scheduled: true,
       timezone: "America/Sao_Paulo"
     });
    

    我在这里使用了 node-cron。 https://www.npmjs.com/package/node-cron

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您可以将站点 crontab.guru 用作 crontab 模式的游乐场。它还提供understandable examplestips

      正如在另一个适合你的答案模式中已经提到的那样,0 18,20,23 * * *,你可以修改它,看看它是如何变化的here

      【讨论】:

        【解决方案3】:

        请将您的 cron 更改为以下内容:

        @Cron('0 0 18,20,23 * * *')
        

        上面给定的 cron 将在每天下午 6 点、晚上 8 点和晚上 11 点运行您的函数。

        【讨论】:

        • 如何在注解中指定时区?
        猜你喜欢
        • 2016-06-05
        • 1970-01-01
        • 2012-08-08
        • 1970-01-01
        • 2022-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-26
        相关资源
        最近更新 更多