gpt4 book ai didi

node.js - 正确停止、等待和重置 node.js heroku 进程

转载 作者:搜寻专家 更新时间:2023-10-31 22:28:13 25 4
gpt4 key购买 nike

我还没有部署,但我不确定如何执行此操作。

我有一个使用大量后台进程的应用程序。也就是说,即使在发送响应之后,仍然有与该响应相关联的函数在后台执行。因此,我想做这样的事情:

var server = http.createServer(app).listen(80)

process.on('SIGINT', function () {
server.close()
setTimeout(function () {
process.exit()
}, 30000) // Wait 30 seconds before exiting
})

我不确定这是否正确。更多假设:

  • 这些后台进程至关重要。但是,它们可能需要 1-2 秒,而不是 30 秒。不过,为了安全起见,我还是想延迟 30 秒。
  • 这应该适用于重新启动进程(例如,永远)和停止进程
  • Heroku(或任何其他进程)通过 process 向 node.js 发送什么信号?我是否必须以不同方式处理它们?
  • 我会以不同方式处理 uncaughtException 吗?

谢谢

最佳答案

明白了。 Heroku 在关闭时发送一个 SIGTERM 信号。如果进程在 10 秒内没有退出,那么它会发送一个 SIGKILL 信号。因此,以下内容就足够了:

process.on('SIGTERM', server.close.bind(server))

https://devcenter.heroku.com/articles/dynos#graceful-shutdown-with-sigterm

假设 10 秒足以让后台进程完成。

基本上,在“退出”信号之前 x 秒发送一个“关闭”信号,您应该没问题。

关于node.js - 正确停止、等待和重置 node.js heroku 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14807920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com