7 / 15
Что должен сделать процесс, получив SIGTERM, чтобы не потерять запросы?
Порядок такой: поймать сигнал, а не умереть по умолчанию; переключить проверку готовности в отказ, чтобы балансировщик перестал слать новые запросы; выждать паузу, потому что снятие из ротации происходит не мгновенно; перестать принимать новые соединения и задачи; дождаться завершения уже начатых с разумным потолком; закрыть пулы и соединения; выйти с нулевым кодом. Общее время дренажа обязано укладываться в отведённый платформой срок, иначе процесс добьют сигналом KILL прямо посреди запроса. Для фоновых воркеров добавляется правило: начатую задачу либо доводят до конца, либо возвращают в очередь — и обработчик обязан быть идемпотентным, потому что задачу, прерванную на середине, кто-то возьмёт повторно.