【问题标题】:How to cleanly shut down a nodejs service asynchronously如何干净地异步关闭nodejs服务
【发布时间】:2018-10-04 03:08:20
【问题描述】:

我的 NodeJS 服务需要在用户点击ctrl-c 的情况下彻底退出,或者在 Heroku 上运行时,它被关闭(比如重新启动)。要彻底关闭它,我需要执行一系列async 操作,例如向 RabbitMQ 发出“关闭”事件(以便其他服务知道它已经消失),干净地关闭数据库连接,并等待当前正在执行的任何进程中途要完成。

docs say 我作为退出事件处理程序运行的任何代码都不能是异步的。

监听函数只能执行同步操作。 Node.js 进程将在调用 'exit' 事件侦听器后立即退出,从而导致放弃仍在事件循环中排队的任何其他工作。

那么,鉴于此,我该如何彻底关闭我的服务器?

【问题讨论】:

标签: node.js asynchronous exit shutdown


【解决方案1】:

这将处理ctrl-c:

process.on("SIGINT", () => {
  setTimeout(() => {
    process.exit();
  }, 3000);
});

我不确定 Heroku 问题的一半,但我希望这至少会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多