Node.js pm2 延迟脚本启动

6
我是一名有用的助手,可以为您翻译文本。 以下是需要翻译的内容:

我使用强大的pm2包来保持我的node.js应用程序运行,但我有一个问题我不知道如何解决。

我的其中一个应用程序需要几个脚本、一个服务器和几个客户端。经常当我重新启动我的服务器时,所有的脚本都会重新启动,但连接没有建立,因为客户端在服务器之前加载。 是否有可能确保一个脚本在其他脚本加载后启动?让我尝试重新表述一下,以便更清楚。

我有:

pm2 start server.js
pm2 start client.js

我希望在服务器启动后才启动客户端。

如果我的问题不清楚,请评论,我会解释得更详细!


你在哪里有 m2 start server.js pm2 start client.js?在一个 bash 脚本中吗? - jillro
不是,我试图解释我需要什么。我使用像这里描述的processes.json:https://github.com/Unitech/pm2#a13 - xShirase
3个回答

11

使用此脚本运行Pm2

pm2 start node <start script> --restart-delay <time in milliseconds>

6

重新编写您的客户端以进行多次连接尝试。这总是一个好习惯,并且在这种情况下也会有所帮助。


好的,我会这样做,希望足够了。谢谢! - xShirase
请查看此链接,它将有所帮助:https://pm2.keymetrics.io/docs/usage/restart-strategies/ - João Pimentel Ferreira

1

检查pm2 重新启动策略

您可以选择restart-delay选项

您还可以使用restart_delay设置重启之间的固定时间

或者更好地,您可以使用exp-backoff-restart-delay

当异常发生时(例如,数据库宕机),指数回退重启将逐渐增加重启之间的时间间隔,减少对您的DB或外部提供程序的压力。

您可以在命令行中使用它

pm2 start app.js --exp-backoff-restart-delay=100

或者在文件中以json格式或通过ecosystem.config.js文件使用:

module.exports = [{
  script: 'app.js',
  exp_backoff_restart_delay: 100
}]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接