如何使node.js应用程序以编程方式永久运行

时间:2019-07-09 08:56:32

标签: javascript node.js docker

我正在构建一个node.js脚本/应用程序/进程(这是节点及其定义的新功能),每天应在某个小时(从conf文件开始)运行。 我使用Node Schedule package安排主要功能每天在指定的时间运行。但问题是此程序包执行“进程内调度”,这意味着我的脚本必须在后台继续运行才能使调度起作用。 所以基本上我的代码在结尾应该是这样的:

  1. 全局const初始化和依赖关系(必需)
  2. 工作安排
  3. 定义所有必需的功能
  4. 使脚本永久运行的逻辑。

此node.js应用程序在AWS的ec2计算机上的docker内部运行。 如何完成永久运行的任务?我需要一个程序化的解决方案,可以将某些东西(一个包,一种设计模式)嵌入到我的代码中。

可能很重要的一点是,在我的代码中,我只有几行“ requires”和const初始化,然后是一个main函数,它会以其他方式调用其他所有函数。另外,因为我使用的是我提到的Node Scheduler,所以在结束脚本时重新启动脚本(例如,如果可能的话,通过docker重新启动)是一个坏主意,因为调度工作将丢失并且脚本本身除了初始化和调度主脚本外不执行任何操作。功能会达到所需的时间,因此可能会每隔几毫秒重新启动一次,我认为这是一个不好的做法。

1 个答案:

答案 0 :(得分:0)

好吧,评论部分中的某人向我指出了我的错误...我在node-scheduler上看到了以下段落,甚至没有测试如果没有tryin就能找到一种“永远运行”的方法,那么它是否可以工作:

“请注意,Node Schedule是为进程内调度而设计的,即,只有在脚本运行时才会启动调度的作业,并且调度将在执行完成后消失。如果您需要调度即使在您的脚本未运行,请考虑使用实际的cron。”

但是显然,这意味着我应该保持进程运行,有效地意味着,如果我关闭终端,调度程序将终止。如果有人需要参考,这是一个有关如何防止这种情况发生的问题和答案的主题:

How to make a node.js application run permanently?

感谢所有尝试提供帮助的人:)