【问题标题】:nodeJS agenda start job on a specific datenodeJS议程在特定日期开始工作
【发布时间】:2019-06-16 02:49:49
【问题描述】:

有没有办法使用agenda 库在特定日期开始工作?

这就是我创建工作的方式:

const someData = {
  name: 'Name',
  value: 'Value'
}
const job = await agenda.create('daily alert', someData);
await job.repeatEvery('1 day').save() // specify when to start

但此时作业在创建后立即开始,我想以某种方式指定它应该开始的日期,例如明天。

【问题讨论】:

    标签: node.js job-scheduling agenda


    【解决方案1】:

    使用议程.schedule(when, job, data)

    安排作业在给定时间运行一次 name。什么时候可以是日期 或一个字符串,例如明天下午 5 点。 https://github.com/agenda/agenda#schedulewhen-name-data-cb

    
    agenda.define('send email report', {priority: 'high', concurrency: 10}, (job, done) => {
      const {to} = job.attrs.data;
      emailClient.send({
        to,
        from: 'example@example.com',
        subject: 'Email Report',
        body: '...'
      }, done);
    });
    
    (async function() {
      await agenda.start();
      await agenda.schedule('tomorrow at 5pm', 'send email report', {to: 'admin@example.com'});
    })();
    

    【讨论】:

    • 这只会运行一次作业,我仍然希望它每 x 天重复一次。
    • 好运吗?我也想每天中午 12 点执行这个
    • 您可以使用agenda.every('day at 12pm') Agenda 内部使用包human-interval 解析计划格式。文档中的更多信息 -> github.com/agenda/agenda#creating-jobs
    【解决方案2】:

    这对你有用。

    const scheduleAJobOnlyOnce = (options) => {
        let job = this.Agenda.create(options.jobName, options);
        job.schedule(options.start); // run at this time
        job.save(); 
      };
    

    【讨论】:

      猜你喜欢
      • 2019-06-19
      • 2016-11-14
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多