NodeJS 中 SIGINT/SIGTERM 的正确处理程序

问题描述 投票:0回答:0

我对如何在 NodeJS 中编写正确的

SIGINT
/
SIGTERM
处理程序感到有点困惑。我需要这些处理程序以便通过异步操作优雅地断开与某些外部服务的连接。

我在 Linux 中注意到,如果我只包含断开连接语句,则运行的节点实例无法终止,例如

Ctrl+C
。调用了事件处理程序,但节点进程似乎仍处于活动状态。

为了防止这种情况,我所做的是在 至少一个 信号处理程序

process.exit(0)
的末尾添加以下行。这是一个好习惯吗?我问是因为我在任何地方都没有看到过这样的事情(例如这里的BullMQ推荐除了关闭连接之外没有提到任何东西)。那么我应该包括它还是可以以更正确的方式以不同的方式实现完全关闭?

如果

process.exit()
必须用。我应该如何选择合适的信号处理程序来调用它?或者我应该将这一行添加到每个处理程序代码的末尾?

我希望 exiting 语句不是必需的,并且该过程将在处理程序完成其操作后终止(无论它们是否异步)。

node.js signals exit graceful-shutdown
© www.soinside.com 2019 - 2024. All rights reserved.