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

Позволять'Предположим, у нас есть такой тривиальный демон, написанный на python:

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

mainloop()

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

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

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

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

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

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

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