2017-04-16 69 views
0

我正在构建一项功能,允许用户安排由服务器生成的报告。如何安排作业在不同时间为不同用户运行

即用户A希望安排在每天 而用户B想要安排相同的在每天上午10点到下午5点被生成并通过电子邮件发送给他的报告。

可能有许多用户希望在任何时候选择他们的作业。

我看到有一些所谓的节点时间表: https://www.npmjs.com/package/node-schedule

在这里你可以这样做:

var schedule = require('node-schedule'); 

var j = schedule.scheduleJob('42 * * * *', function(){ 
    console.log('The answer to life, the universe, and everything!'); 
}); 

来当一分钟每个小时42执行cron作业。

如果系统只有一个用户,可能会有这样的情况,但对于多个用户,我无法对时间进行硬编码来安排工作。任何建议?

回答

0
const schedule = require('node-schedule'); 

let schedules = {}; 
schedules[`${userId1}`] = schedule.scheduleJob('42 * * 1 *', function(){ 
    console.log('Generating report for user 1!'); 
}); 
schedules[`${userId2}`] = schedule.scheduleJob('42 3 * * *', function(){ 
    console.log('Generating report for user 2!'); 
}); 
schedules[`${userId3}`] = schedule.scheduleJob('42 2 * * *', function(){ 
    console.log('Generating report for user 3!'); 
}); 

userId1执行cron作业当一分钟42(每小时)和月是一月

userId2当一分钟42(每天)执行cron作业和时间是凌晨3点

userId3分钟为42(每天)和小时为2时执行cron作业

+0

这并没有完全回答我的问题。如果用户2想要在与用户1不同的时间安排工作,该怎么办?你的回答表明所有用户都在同一时间安排工作。 – Sam

+0

编号''42 * * 1 *'',''42 3 * * *'',''42 2 * * *''不是同一时间。 –

+0

谢谢,你是对的。这个解决方案可以扩展吗?如果有一百万用户,那将意味着1百万个工作被安排在内存中? – Sam

相关问题