Node.js 中如何真正的 Graceful shutdown
const Koa = require('koa')
const sleep = require('sleep-promise')
const app = new Koa()
async function asyncWork() {
await sleep(10000)
console.log('Done async work')
}
app.use(async ctx => {
console.log('got request')
asyncWork().catch(console.error)
ctx.body = 'Hello World'
})
app.listen(3000)
当停掉这个 server 时(SIGTERM 或 SIGINT),不管 asyncWork 有没有完成, node 进程都会立刻退出,如何等待 asyncWork 完成再退出?
注意:asyncWork 是特意没有 await 的,有 await 的情况我知道如何 graceful shutdown