【发布时间】:2017-04-03 14:58:46
【问题描述】:
我希望在某个日期在某个时间执行一些电子邮件作为一次性执行。 node-scheduler 看起来很适合这项工作,我只是想知道在 Heroku 服务器上使用它是否会有任何问题,因为它每天重新启动一次,以及这是否会破坏 node-scheduler用来做它的事情?
【问题讨论】:
我希望在某个日期在某个时间执行一些电子邮件作为一次性执行。 node-scheduler 看起来很适合这项工作,我只是想知道在 Heroku 服务器上使用它是否会有任何问题,因为它每天重新启动一次,以及这是否会破坏 node-scheduler用来做它的事情?
【问题讨论】:
您可能只需要考虑两个问题:
如果服务器在计划执行的时间重新启动会发生什么?这不太可能,但仍有可能。如果这是一个关键问题,我可能会在数据库中的作业上设置time_of_last_run 值。然后在开始时,如果最后一次运行时间在最后一次预期时间之前,你可能错过了执行它。
当“下一个”服务器恢复运行时,您需要重新安排作业。这意味着您需要将这些作业存储在某种数据库中。
除此之外,应该没有问题。
【讨论】:
router.get('myWhatever' 中安排/设置工作。这不是最好的方法吗?
node-scheduler。这是为了确保任何以前安排的作业仍然发生。如果您使用router.get('...' 创建新的计划作业,只需将作业保存到数据库,然后调用node-scheduler 并提供日期。如果服务器在该时间之前重新启动,它将从数据库中拉取作业并在时间到来时执行它们。