SIGTERM просит завершиться корректно, SIGINT обычно приходит при Ctrl+C, а SIGKILL нельзя перехватить. При SIGTERM сервер прекращает приём новой работы и даёт активным запросам ограниченное время.
SIGTERM в Python: завершение активных запросов по таймауту
SIGTERM просит завершиться корректно, SIGINT обычно приходит при Ctrl+C, а SIGKILL нельзя перехватить. При SIGTERM сервер прекращает приём новой работы и даёт активным запросам ограниченное время.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
SIGTERM просит завершиться корректно, SIGINT обычно приходит при Ctrl+C, а SIGKILL нельзя перехватить. При SIGTERM сервер прекращает приём новой работы и даёт активным запросам ограниченное время.
Обработчик signal должен лишь уведомить основной цикл, например установить флаг остановки, а не выполнять долгую сетевую очистку прямо внутри себя. Затем сервер снимает readiness, закрывает listener, дожидается активных задач до deadline и освобождает ресурсы. В asyncio используют поддерживаемый платформой механизм регистрации сигнала. У готового ASGI-сервера чаще настраивают его graceful shutdown, не подменяя обработчики без необходимости. Grace period процесса должен укладываться в срок, после которого оркестратор применит принудительное завершение.