【问题标题】:node-schedule on Heroku (not Scheduler add-on from Heroku)Heroku 上的节点调度(不是 Heroku 的调度程序插件)
【发布时间】:2017-04-03 14:58:46
【问题描述】:

我希望在某个日期在某个时间执行一些电子邮件作为一次性执行。 node-scheduler 看起来很适合这项工作,我只是想知道在 Heroku 服务器上使用它是否会有任何问题,因为它每天重新启动一次,以及这是否会破坏 node-scheduler用来做它的事情?

【问题讨论】:

    标签: node.js heroku cron


    【解决方案1】:

    您可能只需要考虑两个问题:

    1. 如果服务器在计划执行的时间重新启动会发生什么?这不太可能,但仍有可能。如果这是一个关键问题,我可能会在数据库中的作业上设置time_of_last_run 值。然后在开始时,如果最后一次运行时间在最后一次预期时间之前,你可能错过了执行它。

    2. 当“下一个”服务器恢复运行时,您需要重新安排作业。这意味着您需要将这些作业存储在某种数据库中。

    除此之外,应该没有问题。

    【讨论】:

    • 感谢您的回复!我考虑过第一个,因为这只是网站的开始,我现在愿意放手。不过,第 2 点,如果我确实将它们存储在数据库中(我已经这样做只是为了记录保存),我将如何做到这一点?我是否只存储所有日期,然后在服务器重新启动时循环遍历每个日期并通过作业过滤它们?我的计划只是在router.get('myWhatever' 中安排/设置工作。这不是最好的方法吗?
    • 在服务器启动时,从数据库中获取所有计划的作业。遍历每一个并将日期传递给node-scheduler。这是为了确保任何以前安排的作业仍然发生。如果您使用router.get('...' 创建新的计划作业,只需将作业保存到数据库,然后调用node-scheduler 并提供日期。如果服务器在该时间之前重新启动,它将从数据库中拉取作业并在时间到来时执行它们。
    • 有没有关于如何处理 heroku 重启服务器的文档或文章?我什么都找不到
    猜你喜欢
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 2014-04-14
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多