NodeJs:维护一个脚本运行一段给定的时间
NodeJs : maintain a script running for a given time?
我快速而糟糕地编写了一个Node.Js脚本,但没有任何错误处理,这会完成任务,并最终在遇到错误时崩溃。粗心但高效。
为了保持它的运行,我可以永远使用npm,并让它永远重新启动。想要
现在假设我希望它运行12个小时(使用一些模块/代码在崩溃后重新启动它),然后完全停止。
有什么简单的方法可以实现这样的行为吗?
如果你想让node.js进程在12小时后自行停止,你只需要设置一个12小时的计时器,然后调用process.exit()
。
setTimeout(function() {
process.exit(0);
}, 1000 * 60 * 60 * 12);
如果你想永远使用一个系统,但你都想在12小时内停止程序,又不想永远重新启动它,那么你可以运行一个chron作业,计划从现在起12小时执行forever stop /somepath/yourscript.js
。
附言:一个偶尔会自行崩溃的系统不可能是"粗心但高效的"。它可能很快就开始了,但它也很松散和危险,从长远来看从来都不是有效的编码方式。我建议您开始消除代码中的所有技术债务。
多年来,我最喜欢管理开发团队的一句话是一个有点修辞意义的问题:"为什么从来没有足够的时间第一次做对,但总是有足够的时间重新做对。"
如果您使用的是UNIXy操作系统,则可以使用at
命令在给定的时间内永久终止。
示例:
$ echo 'forever stop whatever.js' | at now + 12 hours
您可以使用Linux"at"命令来设置相对计时器。Forever将处理在脚本崩溃时重新启动脚本的问题。
-
启动脚本
forever start /path/yourscript.js
-
调度停止命令
echo 'forever stop /path/yourscript.js' | at now + 12 hours
--
注意,您可能需要安装"at"-例如(apt-get install at
)
注意,您还可以安排"at"执行shell脚本:
- 创建一个包含以下行的文件"stopscript.sh":
forever stop /path/yourscript.js
- 设置"at"作业:
at now +12 hours -f ~/stopscript.sh
使用cluster
模块,当出现错误时主重启集群。
在master中,只需运行这样的代码:
setTimeout(function() {
process.exit(0);
}, 12 * 3600 * 1000);
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 收集一段时间内的EMG数据.建议JS
- 在一段时间内切换文本
- 如何停止字幕文本一段时间,然后继续
- HTTP服务器在一段时间后停止(Node.js)
- Hammer.js过了一段时间就停止工作了
- Meteor-在一段时间内解锁模板(按日期)
- 画布在一段时间后开始滞后
- JS-在一段时间后水平移动图像
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 表单提交在一段时间循环PHP,jquery
- 一段时间后生成回发
- 一段时间后自动点击提交按钮
- 如何每隔一段时间更改我网站的背景颜色
- 一段时间后调用函数,但只调用一次
- 一段时间后使用Javascript加载网页ASP.net
- 在for循环中另一个音频结束后播放一段时间的音频
- 即使用户正在导航到其他页面,也要在一段时间后打开弹出窗口
- 如何在页面加载一段时间后使用adsense
- SignalR在一段时间后停止工作