首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Agenda.js和Node调度重复的日常作业

用Agenda.js和Node调度重复的日常作业
EN

Stack Overflow用户
提问于 2019-10-10 12:52:21
回答 4查看 5K关注 0票数 3

我正在使用Agenda.js和Node设置一个作业调度程序,并以MongoDB为后盾。到目前为止,它还在按预期工作。然而,我不清楚如何安排重复的任务--例如,每天早上9点就应该运行的任务。

"schedule“用于一次作业调度,但不重复:

代码语言:javascript
复制
agenda.schedule('today at 09:00am CST', 'first job');

“每个”的工作间隔都像"3分钟“,而不是”上午9点的一天“。

代码语言:javascript
复制
agenda.every('3 minutes', 'second job');

由于配置方法应该是可链接的,所以我也尝试过这样做:

代码语言:javascript
复制
agenda.processEvery('24 hours').schedule('day at 09:45am CST', 'second job');

..。这确实成功地运行了任务的第一次上午9:45科技委到达,但它没有重置它运行第二天在同一时间。

每天早上9点,我会用什么语法来运行作业?而且,更好的是,我怎么才能把它安排在星期一到星期五呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-10-10 13:55:03

Ajenda接受cron格式。所以你可以做这样的事

这是重复工作在每周的每一天从星期一到星期五 09:00。

代码语言:javascript
复制
job.repeatEvery('0 9 * * 1-5', {
    skipImmediate: true
});

SkipImmediate是可选的。下面是用于上述CRON检验员字符串的cron。阅读更多关于repeatEvery的信息

编辑

生成Job时返回Agenda

代码语言:javascript
复制
agenda.define('NAME', async job => {
            job.repeatEvery('0 9 * * 1-5', {
                skipImmediate: true
            });
            await job.save()
        }

阅读更多关于创造就业的信息

票数 4
EN

Stack Overflow用户

发布于 2020-12-30 06:47:42

我有一个类似的用例,但我不想使用cron字符串。

代码语言:javascript
复制
const agendaEvery = async (interval, sendTime, name, data, options) => {
  const job = agenda
    .create(name, data)
    .repeatEvery(interval, {
      timezone: 'Asia/Kuala_Lumpur',
      skipImmediate: true,
      startDate: sendTime
    })
    .schedule(sendTime)
  await job.save()
}

这将允许假设您希望每天发送电子邮件,您可以使用ISO格式化的日期时间字符串来调度第一个日期,并且间隔可以是.e.g 1 day

票数 0
EN

Stack Overflow用户

发布于 2021-02-16 16:54:46

使用skipImmediate: truerepeatEvery,我得到了一个类型记录错误。线

代码语言:javascript
复制
agenda.every('0 9 * * 1-5', cronTypes.PUSH, null, {skipImmediate: true});

成功了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58323352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档