上下文
我已经为组成我的Node.js应用程序的一些模块添加了配置验证。当它们启动时,每个人都检查它是否正确配置并且可以访问它所需的资源(例如,可以写入目录)。如果它检测到某些内容有问题,它会向自己发送一个SIGINT(process.pid),以便正常关闭应用程序(关闭http服务器,关闭与Redis的可能连接,依此类推)。我希望操作员在启动应用程序之前意识到存在配置和/或环境问题并进行修复。
我使用pm2来启动/停止/重新加载应用程序,我喜欢pm2会在以后崩溃的情况下自动重启它,但我不希望它在上面的场景中重启我的应用程序,因为根本原因只需重新启动应用程序就不会消除,因此pm2将继续重新启动max_restarts
(默认为pm2中的10)。
问题
如何防止pm2在启动时中止时重新启动我的应用程序?
我知道pm2有--wait-ready
选项,但鉴于我们讨论的是具有异步启动逻辑的多个模块,我发现很难确定process.send('ready')
的位置/时间。
可能的解决方案
我正在考虑让我所有的模块发出一个内部的“准备好”事件并连接整个事情链接“准备好”的事件,最后能够将“准备好”发送到pm2,但我想先问一下如果那将是一点点过度工程。
谢谢,
罗杰