Tag: 议程

NodeJS日程安排程序:有2或3个工作人员的集群,作业不是均匀分布的

我正在使用伟大的NodeJS议程任务调度程序( https://github.com/agenda/agenda )来安排我的Node / Express应用程序中的后台作业。 议程也可以运行在节点群集configuration,但是我遇到了一个问题(也许我忽略了一些东西,因为这似乎很基本)。 因此,我使用了自述文件( https://github.com/agenda/agenda#spawning-for- ing- processes )中的代码示例来设置一个具有N个工作者的集群,每个工作者(节点集群进程)都有一个议程实例。 现在假设我有两个工人(进程),我从工人1调用“agenda.now()”,然后可以由这两个工人中的任何一个来拾取(处理),因为他们都在监视队列。 但是,我总是看到第一个工人正在接受这个工作,而另一个工作人员却没有接受这个工作。 我忽略了什么? 所有的工作人员都应该监督排队,所以他们都应该找工作。

如何正确设置议程工作的并发性

这是一个例子工作: const Agenda = require('agenda') const agenda = new Agenda({db: {address: process.env.MONGO_URL}}) agenda.define('example-job', (job) => { console.log('took a job -', job.attrs._id) }) 所以,现在,让我们说,我排队了11个议程这样的工作: const times = require('lodash/times') times(11, () => agenda.now('example-job')) 现在,如果我查看数据库,我可以看到有11个工作排队,准备就绪(就像我期望的那样)。 所以现在我开始一个工作stream程: agenda.on('ready', () => { require('./jobs/example_job') agenda.start() }) 当这个过程开始时,我看到5个作业被从队列中取出,这是有道理的,因为defaultConcurrency是5 https://github.com/agenda/agenda#defaultconcurrencynumber 到目前为止这样好,但是如果我开始另一个工作进程(与上面的工作相同),我预计还会有5个工作从队列中拉出,所以总共有10个工作(每个进程5个),剩下一个队列。 然而,当第二名工人开始工作时,并没有再拖下任何工作,只是空着。 我预计defaultConcurrency是每个进程在任何给定时刻都可以运行的作业数量,但是看起来这是一个适用于所有议程进程中总计随时作业数量的设置。 我在这里丢失了什么,或者指定每个进程可以运行多less个作业的正确方法是什么,没有限制可以跨所有进程运行的作业数量。

议程.JS:如何安排在X时间开始的活动,并在每个月后重复?

我想安排这样的任务: 从11月1日开始安排一项任务 之后每个月重复一次 我不想在11月1日刚刚完成任务的时候运行它。 我正在使用Agenda.js ,我需要确保我正确地做到这一点,特别是第3点。它不能在计划的时刻运行。 这是我想到的: const Agenda = require('agenda'); const agenda = new Agenda({db: { address:'mongodb://127.0.0.1/agenda' } }); agenda.define('task', (job, done) => { console.log('The task is running', job.attrs.hello); done(); }); agenda.run(() => { var event = agenda.create('task', { hello: 'world' }) event.schedule(new Date('2017-11-01')); event.repeatEvery('1 month'); // Will this run every month from now […]

如何在将来在Nodejs中使用Agenda来运行cron-like工作

我在这里有一个问题。 我如何在特定的date时间使用议程像节点调度程序那样运行作业。 基于https://www.npmjs.com/package/node-schedule,node-schedule具有cron风格的调度方法。 所以我从我的input中提取date比较容易。 我已阅读议程文件https://github.com/rschmukler/agenda#agenda-events ,它说议程使用人力间隔指定的时间间隔。 我怎样才能做到这一点?