【发布时间】:2020-09-16 03:43:23
【问题描述】:
我有 node js 应用程序,用户可以在其中安排 4-5 个不同的 cron 作业。用户选择 start_date、end_date、start_time 和 end_time,因此会安排 cron 函数并生成一些活动以与潜在客户(或其他用户)联系。我正在使用 npm 包 node-schedule 来实现所需的 cron 作业执行,但如果我的 Web 应用程序在两者之间崩溃,就会出现问题。
根据node-schedule的官方文档,
请注意,节点调度是为进程内调度而设计的,即调度作业只会在您的脚本运行时触发,并且在执行完成后调度将消失。
我能想出的解决方案是使用 server.js 文件调用 cron 函数,该文件在每次执行服务器脚本时都会重新启动。但我无法解决以下一些问题:
- 调度程序是一个单独的函数,不是特定于活动的,那么如果尚未完成,应用程序如何知道要启动哪个 cron 函数?
- 调度程序是一个单独的函数,每次服务器重新启动时都会调用该函数。如果创建了 6 个服务器实例,它将被调用 6 次。
假设,我的调度程序将在 5 月 28 日上午 11:00 到 5 月 31 日上午 12:00 之间执行。调度程序开始其工作,一些活动在其间执行。如果我的服务器在 5 月 30 日出现故障,我如何从剩余的日期时间和活动中提取并从那里完成?
所以我担心如何安排或处理活动的 cron 作业功能?如果任何活动 cron 作业在服务器停止时崩溃,我应该如何从剩余的时间或日期重新安排或执行该 cron 功能?
我对 cron 作业没有太多经验,希望有一些方便的解决方案。
【问题讨论】:
-
#1 您是否愿意对当前方法进行一些更改? #2 你的 crons 间隔是短的(每 5 分钟一次)还是每天一次? # 你能使用一些数据库吗? #3 这是概念验证还是实际需求?
-
@JRichardsz #1。是的,当然欢迎改变。 #2。 Cron 基于用户的活动。用户在一天中的任何时间选择输入日期时间,然后他选择一批用户的电子邮件来安排电子邮件发送。通过这种方式,用户可以根据选定的日期时间为不同的批次安排多个 cron 作业。 #3 这是我真正的需求,我需要帮助来实现。