¿Cómo procesar la señal SIGTERM con gracia?

Supongamos que tenemos un demonio tan trivial escrito en python:

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

mainloop()

y lo demostramos utilizandostart-stop-daemon que por defecto envíaSIGTERM (TERM) señal en--stop.

Supongamos que el paso actual realizado es#2. Y en este mismo momento estamos enviandoTERM señal.

Lo que pasa es que la ejecución termina inmediatamente.

He encontrado que puedo manejar el evento de señal usandosignal.signal(signal.SIGTERM, handler) pero la cosa es que todavía interrumpe la ejecución actual y pasa el control ahandler.

Entonces, mi pregunta es: ¿es posible no interrumpir la ejecución actual sino manejar laTERM señal en un hilo separado (?) para que pude establecershutdown_flag = True así que esomainloop() tuvo la oportunidad de parar con gracia?

Respuestas a la pregunta(6)

Su respuesta a la pregunta