NestJs如何在特定的时间每天运行3次cron作业?

问题描述 投票:0回答:1

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

我已经检查了文档,但没有理解那个regex代码,以及如何根据我的需要定制它!现在我的方法是这样的:我的方法是这样的:我的方法是这样的:我的方法是这样的。

现在我的方法是这样的。(现在每分钟运行一次,在第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个回答
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.compackagenode-cron

希望能帮到你。


1
投票

您可以使用网站 crontab.guru 作为crontab模式的游乐场。此外,它还提供了 通俗易懂的例子小费.

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


1
投票

请将您的cron改为以下内容。

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

上面给出的cron将在每天下午6点、8点和11点运行您的功能。

© www.soinside.com 2019 - 2024. All rights reserved.