Моему сервису NodeJS необходимо корректно завершить работу в случае, если пользователь нажмет ctrl-c
, или при работе на Heroku он выключится (скажем, будет перезапущен).Чтобы полностью отключить его, мне нужно выполнить кучу async
действий, таких как отправка события «shutdown» в RabbitMQ (чтобы другие сервисные службы знали, что он исчез), аккуратно закрыть соединение с базой данных и дождаться любых процессов, которые в данный момент выполняются.середина задания должна быть завершена.
В документах указано , что любой код, выполняемый в качестве обработчика события выхода, не может быть асинхронным.
Функции прослушивателя должны быть тольковыполнять синхронные операции.Процесс Node.js будет завершен сразу после вызова обработчиков событий 'exit', в результате чего любая дополнительная работа, все еще находящаяся в очереди в цикле событий, будет отменена.
Итак, как мне правильно завершить работумой сервер?