Node.js 如何每秒运行nodejs脚本

Node.js 如何每秒运行nodejs脚本,node.js,cron,Node.js,Cron,我需要每秒钟运行一次nodejs脚本,类似于PHP cron作业。我尝试了一些nodejs cron库,比如,但问题是第一次运行应该是手动的I:e我必须第一次手动运行带有cron脚本的文件 但在php cron作业中,它们由服务器运行,因此,如果运行脚本的apache服务器将自动启动,即使脚本返回一个周期的错误,脚本也将从下一个周期的开始重新运行 那么在nodejs中有什么方法可以实现这一点呢?您有两种选择: 使用Node作为守护进程,使用类似Supervisord的东西来运行Node cron

我需要每秒钟运行一次nodejs脚本,类似于PHP cron作业。我尝试了一些nodejs cron库,比如,但问题是第一次运行应该是手动的I:e我必须第一次手动运行带有cron脚本的文件

但在php cron作业中,它们由服务器运行,因此,如果运行脚本的apache服务器将自动启动,即使脚本返回一个周期的错误,脚本也将从下一个周期的开始重新运行

那么在nodejs中有什么方法可以实现这一点呢?

您有两种选择:

  • 使用Node作为守护进程,使用类似Supervisord的东西来运行Node cron脚本。这种替代方案会浪费诸如RAM之类的资源,因为Node和Supervisord一直在运行

  • 使用系统的crontab,您可以像在命令行上调用节点一样运行脚本,例如
    **Node/path/to/your/script.js
    。这种替代方法效率很高,但缺乏一些控制,比如在出现错误时能够记录输出,尽管您可以通过管道将输出传输到文件:
    node script.js>logfile

  • 您有两个选择:

  • 使用Node作为守护进程,使用类似Supervisord的东西来运行Node cron脚本。这种替代方案会浪费诸如RAM之类的资源,因为Node和Supervisord一直在运行

  • 使用系统的crontab,您可以像在命令行上调用节点一样运行脚本,例如
    **Node/path/to/your/script.js
    。这种替代方法效率很高,但缺乏一些控制,比如在出现错误时能够记录输出,尽管您可以通过管道将输出传输到文件:
    node script.js>logfile


  • 与每秒运行脚本相比,更好的方法是使用套接字。如果处理错误正确,脚本也不会在节点中中断。您提到的cron库工作得很好,因此,如果您需要每秒运行脚本,请使用它和supervisord。这只是一个如何编写应用程序的问题。是否有任何方法可以使用setInterval函数,或者它是否不符合要求?更好的方法是使用套接字,而不是每秒运行脚本。如果执行正确的错误处理,脚本也不会断开节点。您提到的cron库工作得很好,因此,如果您需要每秒运行脚本,请使用它和supervisord。这只是一个如何编写应用程序的问题。是否有任何方法可以使用setInterval函数,或者它是否不符合要求?实际上,这是针对SCADA系统,该系统从一些工厂收集数据,并每秒将这些数据发送到REST api。只有在我们请求时,它才会返回数据,因此我们需要每秒请求数据,并且即使当前周期中存在错误,它也应该能够在无任何麻烦的情况下全天候运行。它应该能够从下一个周期重新开始。选项2不能每分钟运行一次,而不是每秒钟运行一次?@HPierce您是对的,但这完全取决于脚本的编程方式。他可以将
    setTimeout
    设置为调用60次,也可以通过
    sleep(1)
    进行60次调用。我只是给他工具。实际上这是一个SCADA系统,它从一些工厂收集数据,然后每秒将这些数据发送到RESTAPI。只有在我们请求时,它才会返回数据,因此我们需要每秒请求数据,并且即使当前周期中存在错误,它也应该能够在无任何麻烦的情况下全天候运行。它应该能够从下一个周期重新开始。选项2不能每分钟运行一次,而不是每秒钟运行一次?@HPierce您是对的,但这完全取决于脚本的编程方式。他可以将
    setTimeout
    设置为调用60次,也可以通过
    sleep(1)
    进行60次调用。我只是给他工具。