我想在IST上午6点左右运行一个cron,同样的cron也应该在早上6点同时运行。
我正在使用synced-cron在我的流星服务器上运行cron作业。
如果我只有很少的时区来支持我会每天运行这个cron 2次并且它会有效但我将来会有多个时区支持。如何轻松自动化同样的事情。
答案 0 :(得分:2)
可以使用特定时区创建cronjob,这是一个示例:
* 1 * * * TZ =" America / New_York" / command> / dev / null 2>& 1
答案 1 :(得分:1)
您需要将cron作业设置为每半小时运行一次,然后根据用户所在的时区查找工作。
例如,您需要在每个时区的早上6点发送每日电子邮件摘要。让我们假设您在某种集合中拥有每个用户的事件。
每个用户记录都需要包含用户所在的时区。当cron作业运行时,您会进行查询以查找需要接收摘要的用户,这些摘要位于当前时间早上6点的时区。然后发送电子邮件并清除排队的事件。
答案 2 :(得分:0)
经过一番挖掘后,我意识到如果我只支持几个时区,那么每半小时运行一次cron效率不高。就像每天早上6点向不同时区的用户发送邮件一样。< / p>
所以对于这样的场景,我已经提出了一种方法,其中cron将只运行你所支持的时区。
这是这种方法的流星解决方案。
setting.json
{
"tz":["timezone1", "timezone2",...]
}
我正在使用this fork of sync-cron。它支持cron在特定时区运行。
在您要运行cron job的文件中。
for (let timezone = 0; timezone < Meteor.settings.tz.length; timezone++) {
SyncedCron.add({
name: 'name of cron in timezone' + Meteor.settings.tz[timezone],
timezone: Meteor.settings.tz[timezone],
context: {
timezone: Meteor.settings.tz[timezone]
},
schedule(parser) {
//do whatever you want to do with times.
return parser.text('at 06:00 am everyday');
},
job() {
//context of time zone of cron
console.log(this.timezone);
}
});
}
因此,您将在特定时区的特定时间运行cron,并根据您想要支持的时区执行操作。可以在具有不同包的nodejs中应用相同的解决方案。