Как правильно обработать сигнал SIGTERM?

Давайте предположим, что у нас есть такой тривиальный демон, написанный на python:

def mainloop():
    while True:
        # 1. do
        # 2. some
        # 3. important
        # 4. job
        # 5. sleep

mainloop()

и мы демонизируем это с помощьюstart-stop-daemon который по умолчанию отправляетSIGTERM (TERM) сигнал включен--stop.

Давайте предположим, что текущий шаг выполнен#2, И в этот самый момент мы отправляемTERM сигнал.

То, что происходит, - то, что выполнение немедленно прекращается.

Я обнаружил, что могу обработать событие сигнала, используяsignal.signal(signal.SIGTERM, handler) но дело в том, что он все еще прерывает текущее выполнение и передает управлениеhandler.

Итак, мой вопрос - можно ли не прерывать текущее выполнение, а обрабатыватьTERM сигнал в отдельном потоке (?), чтобы я мог установитьshutdown_flag = True так чтоmainloop() был шанс остановиться изящно?

Ответы на вопрос(6)

Ваш ответ на вопрос