SIGTERM в Python: завершение активных запросов по таймауту

SIGTERM просит завершиться корректно, SIGINT обычно приходит при Ctrl+C, а SIGKILL нельзя перехватить. При SIGTERM сервер прекращает приём новой работы и даёт активным запросам ограниченное время.

Короткий ответ

Что ответить на собеседовании

SIGTERM просит завершиться корректно, SIGINT обычно приходит при Ctrl+C, а SIGKILL нельзя перехватить. При SIGTERM сервер прекращает приём новой работы и даёт активным запросам ограниченное время.

Подробный разбор

Ответ с пояснениями

SIGTERM просит завершиться корректно, SIGINT обычно приходит при Ctrl+C, а SIGKILL нельзя перехватить. При SIGTERM сервер прекращает приём новой работы и даёт активным запросам ограниченное время.

Обработчик signal должен лишь уведомить основной цикл, например установить флаг остановки, а не выполнять долгую сетевую очистку прямо внутри себя. Затем сервер снимает readiness, закрывает listener, дожидается активных задач до deadline и освобождает ресурсы. В asyncio используют поддерживаемый платформой механизм регистрации сигнала. У готового ASGI-сервера чаще настраивают его graceful shutdown, не подменяя обработчики без необходимости. Grace period процесса должен укладываться в срок, после которого оркестратор применит принудительное завершение.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее