在几个时区node-cron上运行单个cron作业

问题描述:

我已经配置了作业node-cron,是的,我喜欢这个节点模块来安排节点中的作业。在几个时区node-cron上运行单个cron作业

这里我有要求发送推送通知给位于不同时区的用户。我想在特定的时间发送通知给他们。

假设我在晚上9点发送通知,因此在所有列出的时区中,cron作业将在晚上9点触发。

var CronJob = require('cron').CronJob; 
var job = new CronJob('00 30 11 * * 1-5', function() { 
    /* 
    * Runs every weekday (Monday through Friday) 
    * at 11:30:00 AM. It does not run on Saturday 
    * or Sunday. 
    */ 
    }, function() { 
    /* This function is executed when the job stops */ 
    }, 
    true, /* Start the job right now */ 
    timeZone /* Time zone of this job. */ 
); 

我知道所有这一切,我正在做同样的一个时区,在那里的文档中提到。

timeZone - [可选] - 指定执行的时区。这 将修改相对于您的时区的实际时间。

但是我可以在时区属性中指定多个时区吗?

如果有人知道其他节点模块可以实现这个,那么让我知道?

注意:我已经知道我可以在这里为每个时区配置多个配置,但如果有动态列表会怎么样。

+0

是无人接听类似的问题:http://*.com/questions/32580629/run-a -single-cron-for-multiple-time-zones-node-js – guptakvgaurav

+0

我经历了同样的问题,找不到任何现成的解决方案。所以,我以某种方式设法开发了一种解决方法,我在注册用户所在的时区中维护了一个独特的列表(json文件中的数组),并且每当他们在这个列表中出现新的条目时,我都会发现一个新的工作。 我认为另一种解决方案(但后来放弃)是为所有可能的时区安排cron作业,并找出属于该区域的用户并发送推送通知。 – guptakvgaurav

+0

Ooops,是的,我没有找到,谢谢。我也会继续关注。 –

我不知道如何将时区列表发送到CRON作业,但是您可以更改在cron作业内运行的方法中的逻辑。

你可以这样做:

  • 运行作业每半小时
  • ,如果它是你希望它在
  • 选择用户在哪里(将电流转换GMT时间用户的时区每天跑 - 如果db可以做到这一点)> 11:30 AM在他们的时区& &尚未发出通知
  • 发送通知给返回的用户。

您可能已经走了这条路......只是我2C

HTH扔