【问题标题】:Nestjs Schedule build uninterrupted cron runningNestjs Schedule构建不间断的cron运行
【发布时间】:2020-11-19 16:14:25
【问题描述】:

我正在为我的 cron 使用 nestjs 计划,但我有一个问题。 如何在不中断当前正在运行的 cron 进行构建和更改代码的情况下停止 cron?或者有什么建议或策略?

【问题讨论】:

    标签: nestjs


    【解决方案1】:

    我之前也遇到过同样的问题。

    • 我将所有 cron 作业保存到专用表中。
    • 我创建了一项服务来运行和停止 cron 作业。
    • 每次服务器重新启动时,此服务都会从表中查找作业并恢复它们。

    例如:

    @Injectable()
    export class AppJobService implements OnApplicationBootstrap {
      constructor(
         private schedule: SchedulerRegistry
      ) {}
    
      async onApplicationBootstrap() { // <- Nestjs hook invoked when the app bootstrapped
        const jobs = await Job.find(); // the jobs are all saved in `Job` table.
        jobs.forEach(job => {
            const cron = new CronJob(job.time, () => {}) // You can define the handler for each job type
            this.schedule.addCronJob(job.name, cron);
            cron.start();
        });
      }
    }
    

    希望对你有所帮助。

    【讨论】:

    • 例如,我正在使用 cron 不会丢失的装饰器,我只是想避免当我使用 pm2 重新启动时,正在运行的 cron 被中断,例如在我完成构建之后,它需要文件更改
    猜你喜欢
    • 2023-03-03
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 2013-04-20
    • 2014-03-20
    • 2022-12-21
    相关资源
    最近更新 更多