我还没有部署,但是我不确定如何做到这一点。
我有一个应用程序使用了很多后台进程。也就是说,在响应被发送之后,仍然会有与该响应相关的函数在后台执行。因此,我想要做类似于这样的事情:
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秒的延迟。
- 这应该适用于重新启动进程(例如,使用forever)和停止进程
- Heroku(或任何其他进程)通过
process
向node.js发送哪些信号?我是否需要以不同方式处理它们? - 我是否需要以不同的方式处理
uncaughtException
?
谢谢
SIGTERM
事件而不是SIGINT
或SIGKILL
:https://devcenter.heroku.com/articles/dynos#graceful-shutdown-with-sigterm - Jonathan Ong