【问题标题】:Project task schedule with cronjobs in NodeJS and MongoDB在 NodeJS 和 MongoDB 中使用 cronjobs 的项目任务计划
【发布时间】:2020-11-17 19:57:24
【问题描述】:

我有带有自动报告设置的项目。用户在项目上有一个界面,他可以在每个项目上进行设置。

每天(每天或每 X 天)

每周(他可以选择工作日,也可以说“我每 2,3,4 等周需要这个)

每月(他可以选择日期并检查是否希望在每个月底拥有它)

在每个项目的数据库中,我在表 CronJobs 中插入一个像这样的集合:

  id: string;

  name: string; // name of the job (ProjectReport)

  entityType: string; // name of the entity (in my case Project)

  entityId: string; // id of the entity (of the Project)

  frequency: //(daily, weekly, monthly, never) ;

  every: number; // (every x days/ weeks/ months)

  on: number[]; // (for weekly/ monthly I need to know in which days I will execute the job)

  timezone: string;

  startDate: Date;
  
  endDate: Date;

  lastRunDate: Date;

现在我创建了一个每小时运行的 cron。我不知道确定是否需要运行 cronjob 的最佳方法。如果有人可以帮助我一些想法?

例如,用户设置他希望从 2020 年 5 月 12 日 12:20 每 1 周开始,每周一和周五有一个报告。

我需要考虑到服务器可能会死掉,以防止在某些情况下发送两次报告。

【问题讨论】:

    标签: node.js mongodb cron scheduled-tasks


    【解决方案1】:

    在我看来,您正在寻找agenda。 由于您已经在使用 mongodb 来存储计划的作业,因此这不会真正造成更多的悬垂。

    Agenda 可以像您现在使用的那样处理 cron 字符串,它会在服务器停机时进行处理,并赶上任何错过的作业/确保作业只执行一次。

    【讨论】:

    • 你好@Enslev 我看到了一些关于议程的内容,但考虑到每个项目都有不同的设置,我不明白如何动态处理所有更改
    • 我不明白这个问题。你能详细说明一下吗?
    • 议程如何在不进行手动处理的情况下动态生成报告?以及如何在 Project 和 Cron 之间创建关系?因为在创建 cron 后,用户需要能够查看特定项目的 cron 设置,并且能够更新设置。
    • 基本上对于 3 个项目,例如,我将有 3 个议程计划,每个计划都需要根据某些设置发送报告。如何更改/取消项目 X 的​​ cron?
    猜你喜欢
    • 2021-06-10
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2014-12-28
    • 2020-12-26
    • 2015-10-17
    • 2020-04-18
    • 1970-01-01
    相关资源
    最近更新 更多